Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

infos über I/O kanal Nr.

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Profi-Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
DOZ



Anmeldungsdatum: 14.12.2008
Beiträge: 34

BeitragVerfasst am: 20.07.2009, 09:51    Titel: infos über I/O kanal Nr. Antworten mit Zitat

Moin,

wo bekomme ich die Information her über welche I/O kanäle ich meine Peripherie ansprechen kann?

Mit den befehlen in und out vieleicht

Z.B. würde ich gerne ein Interrupt schreiben welcher die Tastatur einliest und gleich auf dem bildschirm ausgiebt und das in mein betriebssystehm einzubauen das ich wenn ich genmug erfahrung habe schreiben will.

Ein bootloder hätte ich von einer seite welche erklärt wie man sowas realiesieren könnte also ein betriebssystem nur weis ich noch nicht wie ich das auf die erste spur einer Diskette bekomme.
von einer anderen seite würde ich die infos bekommen wie ein kernel zu schreiben ist.

Ich weis nur nicht wie ich das auf die erste spur geschrieben bekomme ob nun auf diskette oder festplatte.

Ein alter Computer ist extra dafür eingerichtet mit dos622 und da ist sons nichts drauf also nichts was man kaputt machen könnte.

Danke für jede hilfe und überlegung die gemacht wird.
_________________
Gruß u.s.
Ersma
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 949
Wohnort: Austria

BeitragVerfasst am: 20.07.2009, 11:25    Titel: Antworten mit Zitat

Ralph Browns Interrupt List (siehe http://www.cs.cmu.edu/~ralf/files.html ) enthält sehr sehr viele Funktionen der verschiedenen Ports.

Auf der obigen Seite findest du die Download-Links zu den Teilen A bis F, diese lädst du herunter und ich glaub im Teil D befindet sich der Großteil der Infos über I/O Ports.
Lade alle Archive herunter, entpacke diese in einen gemeinsamen Ordner, dann öffne die Eingabeaufforderung im Ordner der entpackten Dateien und führe folgende Befehle aus:
Code:
combine .
combine -p .

Dadurch werden die einzelnen Dateien PORTS.A, PORTS.B, PORTS.C zu einer Datei PORTS.LST zusammengefügt. Selbiges passiert mit INTERUP.A, ...
_________________
Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DOZ



Anmeldungsdatum: 14.12.2008
Beiträge: 34

BeitragVerfasst am: 20.07.2009, 15:33    Titel: Antworten mit Zitat

Danke, auf der seite bin ich auch schon gewesen. Wenn mir jetzt noch jemand beim verständnis der darin endhaltenen informationen helfen könnte würde mir das vielleicht weiterhelfen.
Habe jetz A-F ud die drei Downs unter der FAQ geladen und versuche was du geschrieben hast.


Und English bin ich nicht gut
\/
\/
\/

Frequently-Asked Questions Release 61 Last Edit 16jul00
Copyright 2000 Ralf Brown

Have a frequently-asked question about interrupts or ports and its answer?
Mail them to me for inclusion in this file (with credit to you).
ralf@pobox.com

---------------------------------------------
Index:
1. Is there an interrupt to get the BIOS serial number as shown on the
power-up screen?


---------------------------------------------
Q1: Is there an interrupt to get the BIOS serial number as shown on the
power-up screen?
A: (Ralf Brown)
There is no general way to get the serial number. In most cases, you
need to know the proper offset in the BIOS image for that particular
make, model, and revision of the BIOS (and that offset may not even
be present in the real-mode image loaded into shadow RAM!).

Further, with a flashable BIOS, it is quite likely that every single
machine that has been updated with a downloadable upgrade from the
Web will have identical serial numbers, assuming they weren't already
identical as shipped from the factory with the original BIOS version.
Because of this, the BIOS serial number is essentially useless for
any identification purposes.

---------------------------------------------
End of File
_________________
Gruß u.s.
Ersma
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 949
Wohnort: Austria

BeitragVerfasst am: 20.07.2009, 17:24    Titel: Antworten mit Zitat

Ich habe dir die fertig entpackte Liste + Reader zum einfacheren Lesen unter http://wurzinger.bplaced.net/files/programmierung/docs/RBInterruptList.7z hochgeladen.
(Der Gratis-Server hat öfters kleine Probleme; einfach ein paar mal versuchen, wenn der Download nicht gleich funktioniert)

Ich habe dir zwei .REG-Dateien erstellt: "_Installieren.reg" und "_Deinstallieren.reg". Wie der Name bereits sagt, erstere zuerst ausführen (die folgenden Meldungen bestätigen) und dann das Programm "RBILVIEW.exe" starten. Mit letzterer kannst du die Registrierungsschlüssel wieder löschen.
_________________
Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DOZ



Anmeldungsdatum: 14.12.2008
Beiträge: 34

BeitragVerfasst am: 20.07.2009, 18:39    Titel: Antworten mit Zitat

»RBInterruptList.7z« konnte nicht geöffnet werden

Archivtyp wird nicht unterstützt
_________________
Gruß u.s.
Ersma
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 20.07.2009, 18:43    Titel: Antworten mit Zitat

http://www.7-zip.org/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DOZ



Anmeldungsdatum: 14.12.2008
Beiträge: 34

BeitragVerfasst am: 20.07.2009, 18:46    Titel: Antworten mit Zitat

Muß ich auch die zips aus den zips endzippen?
Und ist klar das ich in ubuntu arbeite
_________________
Gruß u.s.
Ersma
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DOZ



Anmeldungsdatum: 14.12.2008
Beiträge: 34

BeitragVerfasst am: 20.07.2009, 19:12    Titel: Antworten mit Zitat

OK.

Und was mach ich jetzt genau mit den infos ?

0061 -W KB controller port B (ISA, EISA) (PS/2 port A is at 0092)
system control port for compatibility with 8255 (see #P0392

W heist WRITE?

Meine Tastatur mit dem lila runden Stecker ist PS/2 soweit ich weis . . .
_________________
Gruß u.s.
Ersma
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4594
Wohnort: ~/

BeitragVerfasst am: 20.07.2009, 22:20    Titel: Antworten mit Zitat

DOZ hat Folgendes geschrieben:
»RBInterruptList.7z« konnte nicht geöffnet werden

Archivtyp wird nicht unterstützt

Falls es sich noch nicht erübrigt hat: Paket p7zip oder p7zip-full installieren.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DOZ



Anmeldungsdatum: 14.12.2008
Beiträge: 34

BeitragVerfasst am: 21.07.2009, 07:07    Titel: Antworten mit Zitat

Wine hat das p7 teil schon geschluckt, warum das mit wine manchmal klappt und manchmal nicht versteh ich auch nicht

---------------------------------------
Was aber sagen mir diese infos *
---------------------------------------

0061 -W KB controller port B (ISA, EISA) (PS/2 port A is at 0092)
system control port for compatibility with 8255 (see #P0392

Heist das W Write, heist das PS/2 A ist I/O kanalNr. 0092 ?


Und meine andere Wichtige Frage war, wie ich die Erste Spur einer Diskette bzw. meiner Festplatte beschrieben bekomme.
Ich dachte da auch an I/O port Nr. 3 weil erst die beiden disketten Ports und dann die erste Festplatte, bin damit aber auch noch nicht weiter weil ich nicht glaube einfach ein Byte nach dem andern durch Port 3 zu schicken brauche.
Da muß ich doch noch andere sachen beachten oder etwa nicht.

Ansonsten würde ich mir das so vorstellen
------------------------------------------------ aber glaube nicht das das so einfach gehen würde

Das mit der tastatur


IN AL,0092 ;Wenn das der TastaturPort ist
OUT ScrPort,AL ;ScrPort- Screen finde ich da garnich erst

Das mit der Festplatte

MOV DX,AnzahDerBytes
MOV AL,Byte(DX) ;Ein Byte nach dem andern BYTE(001),BYTE(002),BYTE(...)
OUT 12h,AL ;Wenn das der FestplattenPort ist
LOOP ;LOOP DECemirt DX ja automatisch

FestplattenPort
--------\/\/ ---------------
CMOS 12h - IBM - HARD DISK DATA
Notes: A PC with a single type 2 (20 Mb ST-225) hard disk will have 20h in
byte 12h
some PCs utilizing external disk controller ROMs will use type 0 to
disable ROM BIOS (e.g. Zenith 248 with Plus HardCard).

Bitfields for IBM hard disk data:
Bit(s) Description (Table C0014)
7-4 First Hard Disk Drive
00 No drive
01-0Eh Hard drive Type 1-14
0Fh Hard Disk Type 16-255
(actual Hard Drive Type is in CMOS RAM 19h)
3-0 Second Hard Disk Drive Type
-/\ (same as first except extrnded type will be
-/\/\-----------------------------
FestplattenPort 3



Um die frage nochmal zu definieren, Wie gehe ich mit den Iformationen aus diesem ganzen InterruptListInfoTeil um.
_________________
Gruß u.s.
Ersma
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 949
Wohnort: Austria

BeitragVerfasst am: 21.07.2009, 14:11    Titel: Antworten mit Zitat

Zitat:
Und ist klar das ich in ubuntu arbeite

Oh, ich bin gleich einmal von Windows ausgegangen. Die bei Ralph Browns Interrupt List beigelegten EXE-Dateien "Combine.exe", usw. konnten dann natürlich nicht funktionieren (Außer zu hättest einen Emulator wie z.B. DosBox bzw. Wine verwendet).
Weiters wusste ich natürlich nicht, dass es unter Linux Probleme beim entpacken von 7z Archiven gibt (bei mir ging das glaub ich immer ohne zusätzlich installierte Software unter Sidux) - 7Zip war für mich geeigneter, da die Datei damit um einiges kleiner war als mit ZIP und ich wegen meiner langsamen Internetverbindung um jedes KB weniger froh bin.
Der Viewer könnte bei dir möglicherweise mit Wine funktionieren (ich denke "sudo apt-get wine" sollte auf der Kommandozeile reichen, wenn du Wine noch nicht installiert hast; evt.noch: "sudo apt-get install msttcorefonts").

Nun zum eigentlichen Thema:

Beispiel: Der Keyboard Controller
Code:
PORT 0060-006F - KEYBOARD CONTROLLER 804x (8041, 8042) (or PPI (8255) on PC,XT)
Note:   XT uses ports 60h-63h, AT uses ports 60h-64h

0060  RW  KB controller data port or keyboard input buffer (ISA, EISA)
      should only be read from after status port bit0 = 1
      should only be written to if status port bit1 = 0
0060  R-  KeyBoard or KB controller data output buffer (via PPI on XT)
      PC: input from port A of 8255, if bit7 in 61h set (see #P0396)
      get scancodes, special codes (in PC: with bit7 in 61h cleared)
        (see #P0390)

0061  R-  KB controller port B control register (ISA, EISA)
      system control port for compatibility with 8255 (see #P0393)
0061  -W  KB controller port B (ISA, EISA)   (PS/2 port A is at 0092)
      system control port for compatibility with 8255 (see #P0392)
0061  -W  PPI Programmable Peripheral Interface 8255 (XT only)
      system control port (see #P0394)
0062  RW  PPI (XT only) data port C (see #P0395)
0063  RW  PPI (XT only) command mode register (see #P0397)

0064  R-  keyboard controller read status (see #P0398,#P0399,#P0400)
0064  -W  keyboard controller input buffer (ISA, EISA) (see #P0401)

[usw...]


In der Titelleiste stehen der Portnummern-Bereich, der beschrieben ist und das Teil, das damit gesteuert wird - in unserem Fall der Keyboard Controller.
Ich interessiere mich in diesem Fall für den Port &H64. Wie du schon gesagt hast steht R für Read (Lesezugriff über IN/INP) und W für Write (Schreibzugriff über OUT).
Ich will dem Controller ein Steuerbyte schicken, also sehe ich mir die Tabelle #P0401 an (Ports können übrigens öfters aufgelistet sein, wenn diese auf verschiedenen Systemen oder bei Lese-/Schreibzugriff unterschiedliche Bedeutungen haben).
Ganz unten in der Tabelle steht ein interessanter Befehl durchgeknallt grinsen :
Code:
F0-FF   sngl   pulse output port low for 6 microseconds.
      bits 0-3 contain the mask for the bits to be pulsed.  A bit is
        pulsed if its mask bit is zero
      bit0=system reset

Nett, Bit 0 ist mit dem Reset Pin der CPU verbunden - also setzen wir dieses Bit kurz auf 0 und schon liegt "Low" am Reset-Pin der CPU an --> Neustart.
Der Code dazu (Assembler - Intel Syntax (Linux typische AT&T Syntax ist mir unsympathisch zwinkern )):
Code:
mov al, 0FEh
out 64h, al


Testen kann man die Funktionalität am Besten unter DOS. Unter Windows bräuchte man Kernel-Privilegien (mit dem von Cherry vorgestellten Code lässt sich aber auch das realisieren).
____________________

Ansonsten kann man eg. nicht viel allgemeines dazu sagen. Wenn du konkrete Fragen hast, wie man dies und das realisiert bin ich gerne bereit zu helfen (sofern möglich).

Bzgl. schreiben auf Diskette kann ich dir unter Linux leider nicht helfen, da habe ich zu wenig Ahnung davon.
_________________
Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4594
Wohnort: ~/

BeitragVerfasst am: 21.07.2009, 16:58    Titel: Antworten mit Zitat

Zitat:
Weiters wusste ich natürlich nicht, dass es unter Linux Probleme beim entpacken von 7z Archiven gibt (bei mir ging das glaub ich immer ohne zusätzlich installierte Software unter Sidux)

Gibt an sich keine Probleme, nur ist das entsprechende Paket unter Ubuntu wohl nicht vorinstalliert. Der Archivmanager (hier File Roller) kann problemlos mit 7z umgehen, sofern das p7zip-Paket nachgeladen wird. (Ist mir auch erst gestern aufgefallen, weil ich bisher kaum auf 7z-Komprimierung gestoßen bin, auch wenn ich das Format an sich sehr nett finde.)
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DOZ



Anmeldungsdatum: 14.12.2008
Beiträge: 34

BeitragVerfasst am: 22.07.2009, 17:04    Titel: Antworten mit Zitat

COOL!

Das hab ich ausprobiert, mit dem "FASM-> Flat Assembler"
sicherheitshalber auf dem Anderen Computer der ja Extra fürs experimentieren eingerichtet ist (Wie schon erwänt hat der nur Dos622 und Fasm) und der RESETet Fix.
Kannst du mir das verständlich machen was genau da passiert.

Ist der Port 64h jetzt einer von 16 Kanälen der mit der Tastatur verbunden ist ?
Hab ich das richtig verstanden ?

Code:

F0-FF   sngl

-->pulse<- output port low for ->6 microseconds.<--

      bits 0-3 contain the mask for the bits to be pulsed.  A bit is
        pulsed if its mask bit is zero
      bit0=system reset


Das markirte schent wichtig zu sein.

So wie ich das verstehe heist das wenn mann den auf 0 lässt (wegen pulse) resetet der compu immer wieder und das wieder aus zu stellen scheint schwierig.

Aber wiso resetet der tastatur port . . . durchgeknallt peinlich
_________________
Gruß u.s.
Ersma
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Profi-Forum Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz