TSR Hotkey bleibt manchmal „stehen

Diskussion zum Thema Programmierung unter DOS (Intel x86)
Antworten
markusk
Norton Commander
Beiträge: 132
Registriert: Fr 19. Apr 2013, 11:12

TSR Hotkey bleibt manchmal „stehen

Beitrag von markusk »

Hallo,

Hab mir in Turbo Pascal eine Unit bzw. ein Assemblermodul geschrieben um Turbo Pascal Programme auch resident nutzen zu können.

Hab das bisher in der Dosbox umgesetzt und funktioniert auch soweit ganz gut. Nun hab ich es gestern mal auf einem echten 486er System ausprobiert und da ist aufgefallen daß scheinbar der Hotkey, also die Buchstabentaste welche ich in Kombination mit den Steuertasten (z.b. rechte + linke Shift Taste) zur Aktivierung des TSR drücken muß, nicht aus dem Tastaturpuffer entfernt wird obwohl ich nach der Erkennung der Tastenkombination diesen explizit über den Int 16h aus dem Tastaturpuffer „lösche“.

Hat wer eine Idee warum das in der Dosbox funktioniert und auf dem echten System nicht? Klar, die Dosbox wird sich nie 100% ig gleich verhalten wie irgendein Echtsystem, aber es wär eben interessant ob ich da vielleicht noch einen Fehler in meinem Programm habe der in der Dosbox irgendwie untergeht.

Lg, Markus
Langer Don
HELP.COM-Benutzer
Beiträge: 45
Registriert: Di 11. Jun 2019, 15:39

Re: TSR Hotkey bleibt manchmal „stehen

Beitrag von Langer Don »

Hallo Markus,

Du erwähnst ja leider nicht welche Int 16h Funktion Du benutzt. Falls Du es also nicht sowieso schon überprüfst, würde ich an Deiner Stelle mal schauen was Int 15/AH=C0h und ggf. Int 16h/AH=9h zurückgeben wie dort [1] beschrieben. Denn ich würde schlicht vermuten, dass eine der benützten Interrupt Funktionen nicht unterstützt wird.

[1] http://www.ctyme.com/intr/rb-1769.htm
GA‑H67A, i7‑2600K @ 1600MHz, 16GB, MCS9865, AU8820, RTL8111, USB‑FDD + SSD + HDD + AHCI‑BD, FreeDOS + Debian
markusk
Norton Commander
Beiträge: 132
Registriert: Fr 19. Apr 2013, 11:12

Re: TSR Hotkey bleibt manchmal „stehen

Beitrag von markusk »

Hallo,

Ich teste mit int 16h, Funktion 01 ob ein Zeichen im Tastaturpuffer bereitsteht und wenn ja lese ich es mit Funktion 00 aus.

Was auch aufgefallen ist: Es tritt nur auf wenn ich das TSR von der DOS Kommandozeile aus aufrufe, wenn ich z.b. eine Anwendung starte und dann die Tastenkombination drücke ist das Verhalten wie erwartet.

Vielleicht hat es irgendwas mit dem Interrupt 28h zu tun, für den musste ich auch einen eigenen Handler implementieren um das TSR von der DOS Kommandozeile aus aufrufen zu können.

Lg, Markus
Langer Don
HELP.COM-Benutzer
Beiträge: 45
Registriert: Di 11. Jun 2019, 15:39

Re: TSR Hotkey bleibt manchmal „stehen

Beitrag von Langer Don »

Dann würde ich mal schauen, ob es in einer Subshell [1] funktioniert, also eine, die man mit EXIT wieder verlassen kann. Wenn es dann geht, würde das m. E. nach erklären, warum es in der DOSBox geht.

EDIT: [1] Bzw. in CONFIG.SYS COMMAND.COM ohne /P in einer expliziten SHELL Definition aufrufen.
GA‑H67A, i7‑2600K @ 1600MHz, 16GB, MCS9865, AU8820, RTL8111, USB‑FDD + SSD + HDD + AHCI‑BD, FreeDOS + Debian
markusk
Norton Commander
Beiträge: 132
Registriert: Fr 19. Apr 2013, 11:12

Re: TSR Hotkey bleibt manchmal „stehe

Beitrag von markusk »

Hallo,

Hab das Problem zumindest mal eingegrenzt, es tritt anscheinend nur auf wenn die Hotkey Tastenkombination eine Shift Taste und eine Buchstabentaste enthält. Wenn ich die Shift Taste durch Alt oder Ctrl ersetze dann wird das jeweilige Zeichen nicht mehr angezeigt.

Weiß zwar noch immer nicht warum das Problem auftritt, aber Ich hab zumindest mal einen Anhaltspunkt.

Auch die Versionen aus den Büchern von Michael Tischer und Martin Althaus haben dieses Problem.

Lg, Markus
Antworten