🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: thur.comp.software
Article #1

C++-Windows-Problem

#1
From: Marc Mueller
Date: Mon, 15 Apr 1996 13:14
58 lines
2774 bytes
Hi,

ich versuche mich gerade an einer Konvertierung eines
DOS-Pascal-Programmes in ein Windows-C++-Programm und stosse dabei auf
fast unbehebbare Probleme. Zur Erklaerung : Es handelt sich um eine
Ansteuerung einer Messkarte, welche ueber Ports angesprochen wird, zur
Uebertragung nutzt diese den DMA und ein Hardware-Interrupt.

(Vielleicht gibt es ja eine WINDOWS-Hardware-FAQ, die meine Probleme
klaeren wurde)

 1. Problem
============

Wie kann ich unter Windows ein Interrupt-Vektor setzen ?
In der c't war mal ein Artikel darueber, demnach solle man die Funktion
des DOS-API (Int 0x21, Funktion 25) nutzen, aber anstatt "int 0x21" soll
Mensch "Dos3Call" benutzen. Die Deklaration von Dos3Call sei aber in
der windows.h vergessen worden, also solle man selbes noch tun (extern). Habe
ich versucht, allerdings weigert sich der Linker, Dos3Call irgendwo zu finden
(Ich nutze MSVC 1.52). Im Moment rufe ich einfach int 0x21.

Die Maskierung des Hardware-Interrupts erledige ich einfach durch
Portzugriffe auf die Adresse 0x21, ist das Windows-tauglich ?


 2. Problem
============

Das Programm ist soweit uebersetzt, nur habe ich irgendwo eine Windows
unvertraeglichkeit drin. Beim ersten Start laeuft das Programm, beim
zweiten gibt es irgendwelche Schutzverletzungen (komischerweise 0bh ODER
0dh; die Stelle im Programm, an der diese Auftritt ist auch nicht immer
die selbe ???).

Das DOS-Pascal-Programm (die Urversion) kann ich beliebig oft unter
Windows starten. Wenn ich diese allerdings starte, nachdem die
C++-Version (meine neue Version) einmal durchgelaufen ist,
meldet Windows, dass dieses Programm auf ein Geraet zugreifen will, das
schon von einer anderen Applikation verwendet wird. Welches Geraet meint
Windows : Den DMA-Controller, den PIC (Interrupt-Controller) oder die
Messkarte (merkt sich das Windows, welche Ports eine Software ansteuert) ?
Wie muss ich am Ende meines Programmes dieses ominoese Geraet wieder
freigeben ?



Fuer sachdienliche Hinweise bin ich schon jetzt aeusserst dankbar,



Marc Mueller

--
               __   __     __   __
              /  | /  |   /  | /  |    Tel : 03641/446477
             / / |/ / |  / / |/ / | Scall : 01681/1276513
          s5/_/|__/ |_|u/_/|__/ |_|a   @   RZ.Uni-Jena.De
Technical Details
Message-ID: <4kti3e$1t7@fsuj19.rz.uni-jena.de>
Path: arc1-ca.pugleaf.net!fsuj50.rz.uni-jena.de!s5muma

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!fsuj50.rz.uni-jena.de!s5muma
From: s5muma@rz.uni-jena.de (Marc Mueller)
Newsgroups: thur.comp.software,de.comp.os.ms-windows,fido.ger.windows.prog,z-netz.rechner.ibm.windows,z-netz.sprachen.c,de.comp.lang.c++
Subject: C++-Windows-Problem
Date: 15 Apr 1996 13:14:22 GMT
Organization: Friedrich-Schiller-University Jena, Germany
Message-ID: <4kti3e$1t7@fsuj19.rz.uni-jena.de>
NNTP-Posting-Host: fsuj50.rz.uni-jena.de
X-Newsreader: TIN [version 1.2 PL2]