|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
qbprogger
Anmeldungsdatum: 13.05.2008 Beiträge: 49 Wohnort: Kirchlinteln
|
Verfasst am: 05.07.2008, 17:44 Titel: PCI Slots |
|
|
Kann ich die PCI Anschlüsse über QBasic programmieren??
Und wenn ja, wie??
Danke im Vorraus _________________ Proggen macht Spaß!!!
|
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 05.07.2008, 19:03 Titel: |
|
|
also du könntest dir einen BMP-Loader programmieren, der dann ein BMP-Bild von einem PCI-Slot anzeigt...
Hardware wird mit Treibern angesteuert! QBasic ist ein DOS-Compiler, damit kann man noch nicht mal DOS-Treiber erstellen, geschweige denn 32- oder 64-Bit Windowstreiber!
Ich frage mich sowieso, was du mit einem Treiber willst O_o
Jede Hardware kommt mit ihrem Treiber und selbst einen Programmieren ist für dich garantiert nicht möglich... _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Zuletzt bearbeitet von Jojo am 07.07.2008, 12:36, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
qbprogger
Anmeldungsdatum: 13.05.2008 Beiträge: 49 Wohnort: Kirchlinteln
|
Verfasst am: 06.07.2008, 18:52 Titel: |
|
|
Nein!!
Das war anders gemeint.
Also:
Ich stecke eine von mir aufgebaute PCI-Karte rein .(Dadrauf ist eine LED)
Kann ich die LED über QB angehen lassen?? _________________ Proggen macht Spaß!!!
|
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 06.07.2008, 19:13 Titel: |
|
|
nein, weil du einen treiber für die schnittstelle brauchst (oder vielleicht seehr viel mit interrupts und ähnlich kompliziertem krams rumfummeln musst) - wie willst du überhaupt ne karte für einen PCI-Slot bauen? O_o _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Zuletzt bearbeitet von Jojo am 07.07.2008, 12:36, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
|
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 06.07.2008, 19:52 Titel: |
|
|
PCI ist ein ganzes Bussystem, da kannst du nicht mal eben schnell einen Pin auf deiner Karte schalten. _________________ Eine handvoll Glück reicht nie für zwei.
--
|
|
Nach oben |
|
|
qbprogger
Anmeldungsdatum: 13.05.2008 Beiträge: 49 Wohnort: Kirchlinteln
|
Verfasst am: 06.07.2008, 19:59 Titel: |
|
|
Ach wie schade....
Naja war ja auch nur so ´ne Idee. _________________ Proggen macht Spaß!!!
|
|
Nach oben |
|
|
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 06.07.2008, 20:48 Titel: |
|
|
Was es aber durchaus gibt, sind PCI IO-Karten.
Ich habe da mal eine gesehn, die 192 Bidirektionale IO Anschlüsse hatte, und die damit prahlte, das man sie sowohl mit QuickBasic, als auch VB, C, C++ und Assembler ansprechen kann.
Kostete aber 200 € .... leider. |
|
Nach oben |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2507 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 07.07.2008, 08:14 Titel: |
|
|
Also grundsätzlich kann DOS schon mit PCI umgehen, sonst wären ja keine LAN-Manager-Treiber für Netzwerkkarten möglich. Allerdings arbeitet dort fast jeder Treiberentwickler mit Assembler; wie weit sich dasselbe mit INP() und OUT realisieren lässt, kann ich zuwenig beurteilen.
@qbprogger: Mach Dich sonst einmal schlau mit den PCI-Spezifikationen, ich würde an Deiner Stelle einmal ganz vorne beginnen, also beispielsweise als erste Anwendung ein PCI Device Enumerator schreiben, d.h. kleine, für reines MS-DOS 6.22 (NTVDM-Betrieb in Windows ist für so etwas absolut tabu!) geschriebene Anwendung, welche Dir einen Dump sämtlicher vorhandener PCI-Geräte macht. Dabei würde ich an Deiner Stelle die Vendor- und Device-ID (sind Hexzahlen) auflisten, ebenso die Ressourcen (diese weist meines Wissens das BIOS beim PC einschalten bereits zu, weil PCI ja bereits eine Plug & Play-Architektur ist), also Interrupt, I/O-Bereich sowie allfällige Memory-Adressbereiche.
Sonst bereits einmal als Einstieg:
http://www.ctyme.com/intr/rb-2372.htm
d.h. sollte sich grundsätzlich über CALL INTERRUPT aufrufen lassen. Jedoch spielt bei vielen Routinen bereits der 32-Bit-Modus eine Rolle, so dass Du um etwas Assembler im 386er-32 Bit-Modus eher nicht drum herumkommen wirst, da QB eine reine Intel 8088-Realmode-16 Bit-Anwendung aus dem IBM PC/XT-Zeitalter ist. => Evtl. dürfte FreeBasic für DOS da einen Schritt weiterkommen... _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
|
Georgp24
Anmeldungsdatum: 30.06.2006 Beiträge: 81 Wohnort: Ahlen
|
Verfasst am: 08.08.2008, 19:49 Titel: |
|
|
Man kann mit Basic auf den PCI Bus zugreifen. Hier ein Beispiel in Powerbasic, das eine Netzwerkkarte auf dem PCI-Bus sucht.
Aber erstmal ein paar Links zum Thema:
http://www.oreilly.de/german/freebooks/linuxdrive2ger/pci.html
http://www.tech-pro.net/intro_pci.html
http://www.waste.org/~winkles/hardware/pci.htm
http://www.acm.uiuc.edu/sigops/roll_your_own/7.c.1.html
Nun der Code. Wie man Inline Assembler mit QBasic macht habe ich ja schon gepostet.
Code: |
'This program scans the pci bus for a network card (just one) and then
'reads its PCI vendor ID and device ID and then
'looks up in the pci.db file which vendor and device these codes indicate.
'
defint a-z
'cls
dev_index=0
'look for network card on pci bus
reg 1,&HB103 'find PCI class
reg 5,dev_index 'SI=device index
asm db &H66 ;mov ecx
asm db &H0B9
asm db &H00 ;00020000h
asm db &H00
asm db &H02
asm db &H00
call interrupt &H1A
'check carry
carry%=reg(0)
carry%=carry% and &H0001
if carry% then
errorcode%=reg(1)
shift right errorcode%,8
print "Cannot find Network adapter - Remark: This program will not run under Windows!"
print "Error reading PCI class code: ";
if errorcode%=134 then
print hex$(errorcode%) " = device not found "
else
print errorcode%
end if
end if
savebx%=reg(2) 'bus/dev/fkt
bus%=savebx%
shift right bus%,8
dev%=savebx%
shift right dev%,3
dev%=dev% and &H001F
fkt%=savebx% and &H0007
reg 1,&HB109 'read PCI word
reg 2,savebx%
reg 6,0 'DI=0 -> vendor
call interrupt &H1A
carry%=reg(0)
carry%=carry% and &H0001
if carry% then print "Error reading vendor ID" : end
vendor%=reg(3) 'CX
reg 1,&H0B109 'read PCI word
reg 2,savebx%
reg 6,2 'DI=2 -> device
call interrupt &H1A
carry%=reg(0)
carry%=carry% and &H0001
if carry% then print "Error reading device ID" : end
device%=reg(3) 'CX
if savebx%+device%+vendor%=0 then
print "Cannot find Network adapter - Remark: This program will not run under Windows!"
end
end if
print
print "NICSCAN has determined the following network adapter from reading the PCI bus:"
print
print "Bus: " bus% " Device: " dev% " Function: " fkt%
print
if len(hex$(vendor%))<4 then
vendor$="v "+repeat$(4-len(hex$(vendor%)),"0")+lcase$(hex$(vendor%))
else
vendor$="v "+lcase$(hex$(vendor%))
end if
if len(hex$(device%))<4 then
device$="d "+mid$(vendor$,3)+repeat$(4-len(hex$(device%)),"0")+lcase$(hex$(device%))
else
device$="d "+mid$(vendor$,3)+lcase$(hex$(device%))
end if
open "pci.dbn" for input as #1
while not eof(1)
line input #1, dbline$
dbline$=rtrim$(dbline$)
dbline$=rtrim$(dbline$,"0")
dbline$=rtrim$(dbline$,"1")
if left$(dbline$,6)=vendor$ then
dbvendor$=mid$(dbline$,8)
end if
if left$(dbline$,10)=device$ then
dbdevice$=mid$(dbline$,12)
end if
wend
close #1
print "PCI vendor: " hex$(vendor%) " = " dbvendor$
print "PCI device: " hex$(device%) " = " dbdevice$
end
|
|
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|