Seite 1 von 1

Portzugriff (z.B. BIOS auslesen) mit dem "Oldie" G

Verfasst: 02.03.2008 13:42
von Helle
Die Datei "giveio.sys" von Dale Roberts kann man wohl als die "Urmutter" aller Port-Zugriffs-Programme bezeichnen und ist auch heute noch Bestandteil diverser (neuer) Programme. Es wird damit nur Zugriff erteilt, die eigentliche Nutzung obliegt dem Programmierer. Hier ein Beispiel:

Code: Alles auswählen

;- Zugriff auf Ports, W2k, WXP
;- "Helle" Klaus Helbing, 02.03.2008, PB4.10
;- Für den Zugriff wird die Datei "giveio.sys" (der Klassiker!) von Dale Roberts verwendet
;- Diese Datei liegt in der DataSection bei 
;- Für die Dienst-Installation sind Administrator-Rechte notwendig!

Global Status.l=AllocateMemory(32)     ;hier Ersatz für eine Struktur, tut´s hier
Global hReg.l
Global DriverStart.l
Global hMgr.l
Global PortAdresse.w
Global WertB.c
Global WertW.w
Global WertL.l
;- Für Test
Global X.c
Global Y.c 
 
;------------------ Überprüfung, ob Registry-Eintrag für giveio existiert
Procedure RegTest()
hReg = RegOpenKeyEx_(#HKEY_LOCAL_MACHINE, "SYSTEM\CurrentControlSet\Services\giveio", 0, #KEY_ALL_ACCESS, @hKey) 
If hReg = 0
  MessageRequester("Statusmeldung von RegTest", "giveio ist im System schon registriert")
 Else
  MessageRequester("Statusmeldung von RegTest", "giveio ist dem System nicht bekannt")
EndIf
RegCloseKey_(hKey) 
EndProcedure 
;------------------  

;------------------ Dienst installieren
Procedure DienstInst()
hMgrC = OpenSCManager_(0, 0, #SC_MANAGER_CREATE_SERVICE) 
SystemDir$ = Space(255) 
FileL = GetSystemDirectory_(SystemDir$, 255) 
DriverDir$ = Left(SystemDir$, FileL) + "\drivers" 
OpenFile(0, DriverDir$ + "\giveio.sys")
If Lof(0) = 0                          ;Datei existierte also noch nicht 
  WriteData(0, ?giveio, 5248)
EndIf 
CloseFile(0)
hInst = CreateService_(hMgrC, "giveio", "giveio", #SERVICE_ALL_ACCESS, #SERVICE_KERNEL_DRIVER, #SERVICE_DEMAND_START, #SERVICE_ERROR_NORMAL, DriverDir$ + "\giveio.sys", #Null, #Null, #Null, #Null, #Null)
If hInst <> 0
  MessageRequester("Statusmeldung von DienstInst", "giveio wurde als Dienst installiert !")
 Else 
  MessageRequester("Statusmeldung von DienstInst", "giveio konnte nicht als Dienst installiert werden ! (ist evtl. schon installiert)")
EndIf   
CloseServiceHandle_(hInst)
CloseServiceHandle_(hMgrC)
EndProcedure 
;------------------

;------------------ DienstStatus ermitteln
Procedure DienstStatus()
hSvc = OpenService_(hMgr, "giveio", #SERVICE_QUERY_STATUS)
QueryServiceStatus_(hSvc, Status)      ;normalerweise wird dafür eine Struktur verwendet, aber es wird nur ein Wert benötigt
DriverStart = PeekL(Status+4)
If DriverStart = 4
  MessageRequester("Statusmeldung von DienstStatus", "giveio ist gestartet !")
 Else 
  MessageRequester("Statusmeldung von DienstStatus", "giveio ist nicht gestartet !")
EndIf   
CloseServiceHandle_(hSvc)
EndProcedure 
;------------------

;------------------ Dienst starten 
Procedure DienstStart()
hSvc = OpenService_(hMgr, "giveio", #SERVICE_ALL_ACCESS)
IsStart = StartService_(hSvc, 0, #Null)  ;0=war schon gestartet (=lässt sich nicht starten)  1=wurde hiermit gestartet
If IsStart = 1
  MessageRequester("Statusmeldung von DienstStart", "giveio wurde gestartet !")
 Else
  MessageRequester("Statusmeldung von DienstStart", "giveio konnte nicht gestartet werden ! (ist evtl. schon gestartet)")
EndIf     
CloseServiceHandle_(hSvc)
EndProcedure 
;------------------

;------------------ Dienst beenden 
Procedure DienstEnd()
hSvc = OpenService_(hMgr, "giveio", #SERVICE_ALL_ACCESS)
IsEnd = ControlService_(hSvc, #SERVICE_CONTROL_STOP, Status)
If IsEnd = 1
  MessageRequester("Statusmeldung von DienstEnd", "giveio wurde beendet !")      ;1=beendet
 Else
  MessageRequester("Statusmeldung von DienstEnd", "giveio wurde nicht beendet !")
EndIf 
CloseServiceHandle_(hSvc)
EndProcedure 
;------------------

;------------------ Dienst entfernen, wer mag, kann hier auch die Datei giveio.sys löschen
Procedure DienstRemove()
hSvc = OpenService_(hMgr, "giveio", #SERVICE_ALL_ACCESS)
IsDel = DeleteService_(hSvc)
If IsDel = 1
  MessageRequester("Statusmeldung von DienstRemove", "giveio wurde entfernt !")      ;1=entfernt
 Else
  MessageRequester("Statusmeldung von DienstRemove", "giveio konnte nicht entfernt werden !", 16)
EndIf 
CloseServiceHandle_(hSvc)
EndProcedure 
;------------------

;------------------ Device öffnen
Procedure OpenDevice()
hFrei = CreateFile_("\\.\giveio", #GENERIC_READ, 0, #Null, #OPEN_EXISTING, #FILE_ATTRIBUTE_NORMAL, #Null)
If hFrei <> #INVALID_HANDLE_VALUE
  MessageRequester("Statusmeldung von Device öffnen", "Portzugriff O.K.!")
  CloseHandle_(hFrei)
 Else
  MessageRequester("Statusmeldung von Device öffnen", "Kein Portzugriff !", 16)
EndIf
EndProcedure 
;------------------

;------------------ Byte lesen
Procedure InB(PortAdresse)
!mov dx,[p.v_PortAdresse]
!in al,dx
!mov [v_WertB],al
EndProcedure 
;------------------

;------------------ Word lesen
Procedure InW(PortAdresse)
!mov dx,[p.v_PortAdresse]
!in ax,dx
!mov [v_WertW],ax
EndProcedure 
;------------------

;------------------ DWord lesen
Procedure InL(PortAdresse)
!mov dx,[p.v_PortAdresse]
!in eax,dx
!mov [v_WertL],eax
EndProcedure 
;------------------

;------------------ Byte schreiben
Procedure OutB(PortAdresse, WertB)
!mov dx,[p.v_PortAdresse]
!mov al,[p.v_WertB]
!out dx,al
EndProcedure 
;------------------

;------------------ Word schreiben
Procedure OutW(PortAdresse, WertW)
!mov dx,[p.v_PortAdresse]
!mov ax,[p.v_WertW]
!out dx,ax
EndProcedure 
;------------------

;------------------ DWord schreiben
Procedure OutL(PortAdresse, WertL)
!mov dx,[p.v_PortAdresse]
!mov eax,[p.v_WertL]
!out dx,eax
EndProcedure 
;------------------

;hier Prozeduren für Strings bei Bedarf 

;------------------ Programm-Anfang Portzugriff
RegTest()                    ;ob giveio in Registry vorhanden
If hReg
  DienstInst()               ;war noch nicht installiert
EndIf 
hMgr = OpenSCManager_(#Null, #Null, #GENERIC_READ)    ;Handle für Zugriff auf den Dienst-Manager
DienstStatus()               ;bei Programmstart überprüfen
If DriverStart <> 4
  DienstStart()              ;noch nicht gestartet, also jetzt starten
EndIf 

OpenDevice()

;------------------ Test, sonst hier Programm mit Zugriff auf die Ports
;- Beispiele für die LPT- und COM-Ports gibt´s genug, versuchen´s wir mal mit dem BIOS
;- hier wird die BIOS-Uhr ausgelesen (Minute)
!in al,70h			             ;Port $70 einlesen, Bit 7 unberührt lassen!
!and al,10000000b		         ;Bits 0-6 löschen
!or al,2  		               ;Adresse setzen  2=Minuten
!out 70h,al			             ;Adresse in Adressregister schreiben
!in al,71h			             ;1 Byte aus BIOS-RAM in AL laden, Minute im gepackten BCD-Format
!mov dl,al
!and al,0fh                  ;Einer-Minute Low-Nibble
!shr dl,4                    ;Zehner-Minute High-Nibble
!mov [v_X],dl
!mov [v_Y],al
X$=Str(X) + Str(Y)
MessageRequester("Minuten vom Asm-Test", "Die BIOS-Uhr zeigt "+ X$ +" Minuten an !") 
;------------------ 

;- hier das Ganze nochmal in PB für die Stunden
InB($70)
WertB & %10000000
WertB | 4                    ;4=Stunden im BCD-Format
OutB($70, WertB)
InB($71)
WertBHilf = WertB
WertB & $f
WertBHilf >> 4
X$=Str(WertBHilf) + Str(WertB)
MessageRequester("Stunden vom PB-Test", "Die BIOS-Uhr zeigt "+ X$ +" Stunden an !") 
;------------------ 

;- Ende
If DriverStart <> 4
  DienstEnd()                ;war vorher nicht gestartet, also jetzt wieder beenden
EndIf 

;DienstRemove()               ;bei Bedarf, evtl. Rechner-Neustart
 
CloseServiceHandle_(hMgr)    ;hier erst beenden

End 
;==================================================================================================
  
;--------------------------------------------------------------------------------------------------  
DataSection                  ;giveio.sys hat eine Länge von 5248 Bytes
giveio:
  Data.b $4D, $5A, $90, $00, $03, $00, $00, $00, $04, $00, $00, $00, $FF, $FF, $00, $00
  Data.b $B8, $00, $00, $00, $00, $00, $00, $00, $40, $00, $00, $00, $00, $00, $00, $00
  Data.b $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $80, $00, $00, $00
  Data.b $0E, $1F, $BA, $0E, $00, $B4, $09, $CD, $21, $B8, $01, $4C, $CD, $21, $54, $68
  Data.b $69, $73, $20, $70, $72, $6F, $67, $72, $61, $6D, $20, $63, $61, $6E, $6E, $6F
  Data.b $74, $20, $62, $65, $20, $72, $75, $6E, $20, $69, $6E, $20, $44, $4F, $53, $20
  Data.b $6D, $6F, $64, $65, $2E, $0D, $0D, $0A, $24, $00, $00, $00, $00, $00, $00, $00
  Data.b $50, $45, $00, $00, $4C, $01, $05, $00, $F5, $34, $63, $31, $A0, $06, $00, $00
  Data.b $7A, $00, $00, $00, $E0, $00, $06, $01, $0B, $01, $02, $32, $80, $01, $00, $00
  Data.b $C0, $02, $00, $00, $00, $00, $00, $00, $E5, $02, $00, $00, $40, $02, $00, $00
  Data.b $C0, $03, $00, $00, $00, $00, $01, $00, $20, $00, $00, $00, $20, $00, $00, $00
  Data.b $01, $00, $00, $00, $00, $00, $00, $00, $01, $00, $00, $00, $00, $00, $00, $00
  Data.b $80, $06, $00, $00, $40, $02, $00, $00, $55, $33, $00, $00, $01, $00, $00, $00
  Data.b $00, $00, $10, $00, $00, $10, $00, $00, $00, $00, $10, $00, $00, $10, $00, $00
  Data.b $00, $00, $00, $00, $10, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $80, $04, $00, $00, $92, $01, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $20, $06, $00, $00, $34, $00, $00, $00, $C0, $03, $00, $00, $54, $00, $00, $00
  Data.b $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $00, $00, $00, $00, $00, $00, $00, $00, $2E, $74, $65, $78, $74, $00, $00, $00
  Data.b $68, $01, $00, $00, $40, $02, $00, $00, $80, $01, $00, $00, $40, $02, $00, $00
  Data.b $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $20, $00, $00, $60
  Data.b $2E, $72, $64, $61, $74, $61, $00, $00, $54, $00, $00, $00, $C0, $03, $00, $00
  Data.b $60, $00, $00, $00, $C0, $03, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $00, $00, $00, $00, $40, $00, $00, $40, $2E, $64, $61, $74, $61, $00, $00, $00
  Data.b $4A, $00, $00, $00, $20, $04, $00, $00, $60, $00, $00, $00, $20, $04, $00, $00
  Data.b $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $40, $00, $00, $C0
  Data.b $2E, $69, $64, $61, $74, $61, $00, $00, $92, $01, $00, $00, $80, $04, $00, $00
  Data.b $A0, $01, $00, $00, $80, $04, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $00, $00, $00, $00, $40, $00, $00, $C0, $2E, $72, $65, $6C, $6F, $63, $00, $00
  Data.b $48, $00, $00, $00, $20, $06, $00, $00, $60, $00, $00, $00, $20, $06, $00, $00
  Data.b $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $40, $00, $00, $42
  Data.b $55, $B9, $09, $00, $00, $00, $8B, $EC, $83, $EC, $30, $56, $57, $BE, $24, $04
  Data.b $01, $00, $8D, $7D, $D0, $F3, $A5, $66, $A5, $83, $3D, $20, $04, $01, $00, $00
  Data.b $74, $11, $68, $00, $20, $00, $00, $A1, $20, $04, $01, $00, $50, $FF, $15, $E4
  Data.b $04, $01, $00, $8D, $45, $D0, $8D, $4D, $F8, $50, $51, $FF, $15, $E0, $04, $01
  Data.b $00, $8D, $4D, $F8, $51, $FF, $15, $DC, $04, $01, $00, $8B, $4D, $08, $FF, $71
  Data.b $04, $FF, $15, $F0, $04, $01, $00, $5F, $5E, $8B, $E5, $5D, $C2, $04, $00, $FF
  Data.b $74, $24, $04, $FF, $15, $D8, $04, $01, $00, $50, $E8, $F3, $00, $00, $00, $FF
  Data.b $35, $20, $04, $01, $00, $6A, $01, $E8, $E0, $00, $00, $00, $C2, $04, $00, $6A
  Data.b $01, $E8, $D9, $FF, $FF, $FF, $C3, $E8, $F3, $FF, $FF, $FF, $8B, $4C, $24, $08
  Data.b $33, $C0, $33, $D2, $89, $41, $1C, $89, $41, $18, $FF, $15, $F4, $04, $01, $00
  Data.b $33, $C0, $C2, $08, $00, $55, $B9, $07, $00, $00, $00, $8B, $EC, $83, $EC, $5C
  Data.b $56, $57, $BE, $4C, $04, $01, $00, $8D, $7D, $CC, $F3, $A5, $66, $A5, $BE, $24
  Data.b $04, $01, $00, $8D, $7D, $A4, $B9, $09, $00, $00, $00, $68, $00, $20, $00, $00
  Data.b $F3, $A5, $66, $A5, $FF, $15, $00, $05, $01, $00, $A3, $20, $04, $01, $00, $85
  Data.b $C0, $75, $07, $B8, $9A, $00, $00, $C0, $EB, $69, $8B, $3D, $20, $04, $01, $00
  Data.b $33, $C0, $B9, $00, $08, $00, $00, $F3, $AB, $8D, $45, $CC, $8D, $4D, $F4, $50
  Data.b $8B, $35, $E0, $04, $01, $00, $51, $FF, $D6, $8D, $4D, $A4, $8D, $45, $EC, $51
  Data.b $50, $FF, $D6, $8D, $4D, $FC, $8D, $55, $F4, $51, $8B, $75, $08, $6A, $00, $6A
  Data.b $00, $6A, $22, $52, $6A, $00, $56, $FF, $15, $FC, $04, $01, $00, $85, $C0, $7C
  Data.b $22, $8D, $45, $F4, $8D, $4D, $EC, $50, $51, $FF, $15, $F8, $04, $01, $00, $85
  Data.b $C0, $7C, $10, $C7, $46, $38, $C7, $02, $01, $00, $C7, $46, $34, $40, $02, $01
  Data.b $00, $33, $C0, $5F, $5E, $8B, $E5, $5D, $C2, $08, $00, $CC, $FF, $25, $E8, $04
  Data.b $01, $00, $FF, $25, $EC, $04, $01, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $00, $00, $00, $00, $F5, $34, $63, $31, $00, $00, $00, $00, $01, $00, $00, $00
  Data.b $B0, $0C, $00, $00, $00, $00, $00, $00, $80, $06, $00, $00, $00, $00, $00, $00
  Data.b $F5, $34, $63, $31, $00, $00, $00, $00, $04, $00, $00, $00, $10, $01, $00, $00
  Data.b $00, $00, $00, $00, $30, $13, $00, $00, $00, $00, $00, $00, $F5, $34, $63, $31
  Data.b $00, $00, $00, $00, $03, $00, $00, $00, $30, $00, $00, $00, $00, $00, $00, $00
  Data.b $40, $14, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $00, $00, $00, $00, $5C, $00, $44, $00, $6F, $00, $73, $00, $44, $00, $65, $00
  Data.b $76, $00, $69, $00, $63, $00, $65, $00, $73, $00, $5C, $00, $67, $00, $69, $00
  Data.b $76, $00, $65, $00, $69, $00, $6F, $00, $00, $00, $00, $00, $5C, $00, $44, $00
  Data.b $65, $00, $76, $00, $69, $00, $63, $00, $65, $00, $5C, $00, $67, $00, $69, $00
  Data.b $76, $00, $65, $00, $69, $00, $6F, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $A8, $04, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $04, $06, $00, $00
  Data.b $D8, $04, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $00, $00, $00, $00, $00, $00, $00, $00, $92, $05, $00, $00, $1A, $05, $00, $00
  Data.b $32, $05, $00, $00, $4A, $05, $00, $00, $62, $05, $00, $00, $78, $05, $00, $00
  Data.b $08, $05, $00, $00, $A8, $05, $00, $00, $BE, $05, $00, $00, $D6, $05, $00, $00
  Data.b $E8, $05, $00, $00, $00, $00, $00, $00, $92, $05, $00, $00, $1A, $05, $00, $00
  Data.b $32, $05, $00, $00, $4A, $05, $00, $00, $62, $05, $00, $00, $78, $05, $00, $00
  Data.b $08, $05, $00, $00, $A8, $05, $00, $00, $BE, $05, $00, $00, $D6, $05, $00, $00
  Data.b $E8, $05, $00, $00, $00, $00, $00, $00, $C2, $00, $49, $6F, $44, $65, $6C, $65
  Data.b $74, $65, $44, $65, $76, $69, $63, $65, $00, $00, $C3, $00, $49, $6F, $44, $65
  Data.b $6C, $65, $74, $65, $53, $79, $6D, $62, $6F, $6C, $69, $63, $4C, $69, $6E, $6B
  Data.b $00, $00, $1E, $02, $52, $74, $6C, $49, $6E, $69, $74, $55, $6E, $69, $63, $6F
  Data.b $64, $65, $53, $74, $72, $69, $6E, $67, $00, $00, $72, $01, $4D, $6D, $46, $72
  Data.b $65, $65, $4E, $6F, $6E, $43, $61, $63, $68, $65, $64, $4D, $65, $6D, $6F, $72
  Data.b $79, $00, $04, $01, $4B, $65, $33, $38, $36, $53, $65, $74, $49, $6F, $41, $63
  Data.b $63, $65, $73, $73, $4D, $61, $70, $00, $02, $01, $4B, $65, $33, $38, $36, $49
  Data.b $6F, $53, $65, $74, $41, $63, $63, $65, $73, $73, $50, $72, $6F, $63, $65, $73
  Data.b $73, $00, $CD, $00, $49, $6F, $47, $65, $74, $43, $75, $72, $72, $65, $6E, $74
  Data.b $50, $72, $6F, $63, $65, $73, $73, $00, $FD, $00, $49, $6F, $66, $43, $6F, $6D
  Data.b $70, $6C, $65, $74, $65, $52, $65, $71, $75, $65, $73, $74, $00, $00, $BE, $00
  Data.b $49, $6F, $43, $72, $65, $61, $74, $65, $53, $79, $6D, $62, $6F, $6C, $69, $63
  Data.b $4C, $69, $6E, $6B, $00, $00, $BB, $00, $49, $6F, $43, $72, $65, $61, $74, $65
  Data.b $44, $65, $76, $69, $63, $65, $00, $00, $69, $01, $4D, $6D, $41, $6C, $6C, $6F
  Data.b $63, $61, $74, $65, $4E, $6F, $6E, $43, $61, $63, $68, $65, $64, $4D, $65, $6D
  Data.b $6F, $72, $79, $00, $6E, $74, $6F, $73, $6B, $72, $6E, $6C, $2E, $65, $78, $65
  Data.b $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $00, $00, $00, $00, $34, $00, $00, $00, $4E, $32, $5B, $32, $68, $32, $6F, $32
  Data.b $7D, $32, $87, $32, $93, $32, $A5, $32, $B1, $32, $DC, $32, $F3, $32, $FF, $32
  Data.b $16, $33, $1B, $33, $2C, $33, $42, $33, $69, $33, $7B, $33, $86, $33, $8D, $33
  Data.b $9E, $33, $A4, $33, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $7A, $00, $00, $00, $20, $00, $00, $00, $00, $00, $00, $00, $20, $00, $00, $00
  Data.b $40, $02, $00, $00, $C0, $03, $00, $00, $C0, $03, $00, $00, $00, $05, $00, $00
  Data.b $2E, $66, $69, $6C, $65, $00, $00, $00, $00, $00, $00, $00, $FE, $FF, $00, $00
  Data.b $67, $02, $43, $3A, $5C, $64, $61, $6C, $65, $5C, $64, $64, $6A, $5C, $64, $69
  Data.b $73, $74, $72, $69, $62, $5C, $67, $69, $76, $65, $69, $6F, $5C, $67, $69, $76
  Data.b $65, $69, $6F, $2E, $63, $00, $2E, $64, $61, $74, $61, $00, $00, $00, $20, $04
  Data.b $00, $00, $03, $00, $00, $00, $03, $01, $04, $00, $00, $00, $00, $00, $00, $00
  Data.b $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $2E, $74, $65, $78, $74, $00
  Data.b $00, $00, $40, $02, $00, $00, $01, $00, $00, $00, $03, $01, $5F, $00, $00, $00
  Data.b $07, $00, $00, $00, $00, $00, $00, $00, $00, $00, $01, $00, $00, $00, $2E, $64
  Data.b $61, $74, $61, $00, $00, $00, $24, $04, $00, $00, $03, $00, $00, $00, $03, $01
  Data.b $26, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $02, $00
  Data.b $00, $00, $2E, $74, $65, $78, $74, $00, $00, $00, $9F, $02, $00, $00, $01, $00
  Data.b $00, $00, $03, $01, $20, $00, $00, $00, $04, $00, $00, $00, $00, $00, $00, $00
  Data.b $00, $00, $01, $00, $00, $00, $2E, $64, $65, $62, $75, $67, $24, $46, $A0, $1A
  Data.b $00, $00, $06, $00, $00, $00, $03, $01, $10, $00, $00, $00, $01, $00, $00, $00
  Data.b $00, $00, $00, $00, $04, $00, $05, $00, $00, $00, $2E, $74, $65, $78, $74, $00
  Data.b $00, $00, $BF, $02, $00, $00, $01, $00, $00, $00, $03, $01, $08, $00, $00, $00
  Data.b $01, $00, $00, $00, $00, $00, $00, $00, $00, $00, $01, $00, $00, $00, $2E, $64
  Data.b $65, $62, $75, $67, $24, $46, $B0, $1A, $00, $00, $06, $00, $00, $00, $03, $01
  Data.b $10, $00, $00, $00, $01, $00, $00, $00, $00, $00, $00, $00, $06, $00, $05, $00
  Data.b $00, $00, $2E, $74, $65, $78, $74, $00, $00, $00, $C7, $02, $00, $00, $01, $00
  Data.b $00, $00, $03, $01, $1E, $00, $00, $00, $02, $00, $00, $00, $00, $00, $00, $00
  Data.b $00, $00, $01, $00, $00, $00, $2E, $64, $65, $62, $75, $67, $24, $46, $C0, $1A
  Data.b $00, $00, $06, $00, $00, $00, $03, $01, $10, $00, $00, $00, $01, $00, $00, $00
  Data.b $00, $00, $00, $00, $08, $00, $05, $00, $00, $00, $2E, $74, $65, $78, $74, $00
  Data.b $00, $00, $E5, $02, $00, $00, $01, $00, $00, $00, $03, $01, $B6, $00, $00, $00
  Data.b $0A, $00, $00, $00, $00, $00, $00, $00, $00, $00, $01, $00, $00, $00, $2E, $64
  Data.b $61, $74, $61, $00, $00, $00, $4C, $04, $00, $00, $03, $00, $00, $00, $03, $01
  Data.b $1E, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $02, $00
  Data.b $00, $00, $2E, $69, $64, $61, $74, $61, $24, $36, $04, $06, $00, $00, $04, $00
  Data.b $00, $00, $03, $00, $2E, $69, $64, $61, $74, $61, $24, $35, $00, $05, $00, $00
  Data.b $04, $00, $00, $00, $03, $01, $04, $00, $00, $00, $01, $00, $00, $00, $00, $00
  Data.b $00, $00, $00, $00, $01, $00, $58, $FA, $2E, $69, $64, $61, $74, $61, $24, $34
  Data.b $D0, $04, $00, $00, $04, $00, $00, $00, $03, $01, $04, $00, $00, $00, $01, $00
  Data.b $00, $00, $00, $00, $00, $00, $02, $00, $05, $00, $58, $FA, $2E, $69, $64, $61
  Data.b $74, $61, $24, $36, $E8, $05, $00, $00, $04, $00, $00, $00, $03, $01, $1C, $00
  Data.b $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $02, $00, $05, $00, $58, $FA
  Data.b $2E, $69, $64, $61, $74, $61, $24, $35, $FC, $04, $00, $00, $04, $00, $00, $00
  Data.b $03, $01, $04, $00, $00, $00, $01, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $01, $00, $58, $FA, $2E, $69, $64, $61, $74, $61, $24, $34, $CC, $04, $00, $00
  Data.b $04, $00, $00, $00, $03, $01, $04, $00, $00, $00, $01, $00, $00, $00, $00, $00
  Data.b $00, $00, $02, $00, $05, $00, $58, $FA, $2E, $69, $64, $61, $74, $61, $24, $36
  Data.b $D6, $05, $00, $00, $04, $00, $00, $00, $03, $01, $12, $00, $00, $00, $00, $00
  Data.b $00, $00, $00, $00, $00, $00, $02, $00, $05, $00, $58, $FA, $2E, $69, $64, $61
  Data.b $74, $61, $24, $35, $F8, $04, $00, $00, $04, $00, $00, $00, $03, $01, $04, $00
  Data.b $00, $00, $01, $00, $00, $00, $00, $00, $00, $00, $00, $00, $01, $00, $58, $FA
  Data.b $2E, $69, $64, $61, $74, $61, $24, $34, $C8, $04, $00, $00, $04, $00, $00, $00
  Data.b $03, $01, $04, $00, $00, $00, $01, $00, $00, $00, $00, $00, $00, $00, $02, $00
  Data.b $05, $00, $58, $FA, $2E, $69, $64, $61, $74, $61, $24, $36, $BE, $05, $00, $00
  Data.b $04, $00, $00, $00, $03, $01, $18, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $00, $00, $02, $00, $05, $00, $58, $FA, $2E, $69, $64, $61, $74, $61, $24, $35
  Data.b $F4, $04, $00, $00, $04, $00, $00, $00, $03, $01, $04, $00, $00, $00, $01, $00
  Data.b $00, $00, $00, $00, $00, $00, $00, $00, $01, $00, $58, $FA, $2E, $69, $64, $61
  Data.b $74, $61, $24, $34, $C4, $04, $00, $00, $04, $00, $00, $00, $03, $01, $04, $00
  Data.b $00, $00, $01, $00, $00, $00, $00, $00, $00, $00, $02, $00, $05, $00, $58, $FA
  Data.b $2E, $69, $64, $61, $74, $61, $24, $36, $A8, $05, $00, $00, $04, $00, $00, $00
  Data.b $03, $01, $16, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $02, $00
  Data.b $05, $00, $58, $FA, $2E, $69, $64, $61, $74, $61, $24, $35, $D8, $04, $00, $00
  Data.b $04, $00, $00, $00, $03, $01, $04, $00, $00, $00, $01, $00, $00, $00, $00, $00
  Data.b $00, $00, $00, $00, $01, $00, $58, $FA, $2E, $69, $64, $61, $74, $61, $24, $34
  Data.b $A8, $04, $00, $00, $04, $00, $00, $00, $03, $01, $04, $00, $00, $00, $01, $00
  Data.b $00, $00, $00, $00, $00, $00, $02, $00, $05, $00, $58, $FA, $2E, $69, $64, $61
  Data.b $74, $61, $24, $36, $92, $05, $00, $00, $04, $00, $00, $00, $03, $01, $16, $00
  Data.b $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $02, $00, $05, $00, $58, $FA
  Data.b $2E, $74, $65, $78, $74, $00, $00, $00, $A2, $03, $00, $00, $01, $00, $00, $00
  Data.b $03, $01, $06, $00, $00, $00, $01, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $01, $00, $58, $FA, $2E, $69, $64, $61, $74, $61, $24, $35, $EC, $04, $00, $00
  Data.b $04, $00, $00, $00, $03, $01, $04, $00, $00, $00, $01, $00, $00, $00, $00, $00
  Data.b $00, $00, $00, $00, $01, $00, $58, $FA, $2E, $69, $64, $61, $74, $61, $24, $34
  Data.b $BC, $04, $00, $00, $04, $00, $00, $00, $03, $01, $04, $00, $00, $00, $01, $00
  Data.b $00, $00, $00, $00, $00, $00, $02, $00, $05, $00, $58, $FA, $2E, $69, $64, $61
  Data.b $74, $61, $24, $36, $78, $05, $00, $00, $04, $00, $00, $00, $03, $01, $1A, $00
  Data.b $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $02, $00, $05, $00, $58, $FA
  Data.b $2E, $74, $65, $78, $74, $00, $00, $00, $9C, $03, $00, $00, $01, $00, $00, $00
  Data.b $03, $01, $06, $00, $00, $00, $01, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $01, $00, $58, $FA, $2E, $69, $64, $61, $74, $61, $24, $35, $E8, $04, $00, $00
  Data.b $04, $00, $00, $00, $03, $01, $04, $00, $00, $00, $01, $00, $00, $00, $00, $00
  Data.b $00, $00, $00, $00, $01, $00, $58, $FA, $2E, $69, $64, $61, $74, $61, $24, $34
  Data.b $B8, $04, $00, $00, $04, $00, $00, $00, $03, $01, $04, $00, $00, $00, $01, $00
  Data.b $00, $00, $00, $00, $00, $00, $02, $00, $05, $00, $58, $FA, $2E, $69, $64, $61
  Data.b $74, $61, $24, $36, $62, $05, $00, $00, $04, $00, $00, $00, $03, $01, $16, $00
  Data.b $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $02, $00, $05, $00, $58, $FA
  Data.b $2E, $69, $64, $61, $74, $61, $24, $35, $E4, $04, $00, $00, $04, $00, $00, $00
  Data.b $03, $01, $04, $00, $00, $00, $01, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $01, $00, $58, $FA, $2E, $69, $64, $61, $74, $61, $24, $34, $B4, $04, $00, $00
  Data.b $04, $00, $00, $00, $03, $01, $04, $00, $00, $00, $01, $00, $00, $00, $00, $00
  Data.b $00, $00, $02, $00, $05, $00, $58, $FA, $2E, $69, $64, $61, $74, $61, $24, $36
  Data.b $4A, $05, $00, $00, $04, $00, $00, $00, $03, $01, $18, $00, $00, $00, $00, $00
  Data.b $00, $00, $00, $00, $00, $00, $02, $00, $05, $00, $58, $FA, $2E, $69, $64, $61
  Data.b $74, $61, $24, $35, $E0, $04, $00, $00, $04, $00, $00, $00, $03, $01, $04, $00
  Data.b $00, $00, $01, $00, $00, $00, $00, $00, $00, $00, $00, $00, $01, $00, $58, $FA
  Data.b $2E, $69, $64, $61, $74, $61, $24, $34, $B0, $04, $00, $00, $04, $00, $00, $00
  Data.b $03, $01, $04, $00, $00, $00, $01, $00, $00, $00, $00, $00, $00, $00, $02, $00
  Data.b $05, $00, $58, $FA, $2E, $69, $64, $61, $74, $61, $24, $36, $32, $05, $00, $00
  Data.b $04, $00, $00, $00, $03, $01, $18, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $00, $00, $02, $00, $05, $00, $58, $FA, $2E, $69, $64, $61, $74, $61, $24, $35
  Data.b $DC, $04, $00, $00, $04, $00, $00, $00, $03, $01, $04, $00, $00, $00, $01, $00
  Data.b $00, $00, $00, $00, $00, $00, $00, $00, $01, $00, $58, $FA, $2E, $69, $64, $61
  Data.b $74, $61, $24, $34, $AC, $04, $00, $00, $04, $00, $00, $00, $03, $01, $04, $00
  Data.b $00, $00, $01, $00, $00, $00, $00, $00, $00, $00, $02, $00, $05, $00, $58, $FA
  Data.b $2E, $69, $64, $61, $74, $61, $24, $36, $1A, $05, $00, $00, $04, $00, $00, $00
  Data.b $03, $01, $18, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $02, $00
  Data.b $05, $00, $58, $FA, $2E, $69, $64, $61, $74, $61, $24, $35, $F0, $04, $00, $00
  Data.b $04, $00, $00, $00, $03, $01, $04, $00, $00, $00, $01, $00, $00, $00, $00, $00
  Data.b $00, $00, $00, $00, $01, $00, $58, $FA, $2E, $69, $64, $61, $74, $61, $24, $34
  Data.b $C0, $04, $00, $00, $04, $00, $00, $00, $03, $01, $04, $00, $00, $00, $01, $00
  Data.b $00, $00, $00, $00, $00, $00, $02, $00, $05, $00, $58, $FA, $2E, $69, $64, $61
  Data.b $74, $61, $24, $36, $08, $05, $00, $00, $04, $00, $00, $00, $03, $01, $12, $00
  Data.b $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $02, $00, $05, $00, $58, $FA
  Data.b $68, $65, $61, $64, $65, $72, $00, $00, $00, $00, $00, $00, $FE, $FF, $00, $00
  Data.b $02, $00, $00, $00, $00, $00, $13, $00, $00, $00, $40, $02, $00, $00, $01, $00
  Data.b $20, $00, $02, $00, $00, $00, $00, $00, $A0, $00, $00, $00, $9F, $02, $00, $00
  Data.b $01, $00, $20, $00, $02, $00, $00, $00, $00, $00, $B6, $00, $00, $00, $BF, $02
  Data.b $00, $00, $01, $00, $20, $00, $02, $00, $00, $00, $00, $00, $C0, $00, $00, $00
  Data.b $C7, $02, $00, $00, $01, $00, $20, $00, $02, $00, $00, $00, $00, $00, $04, $00
  Data.b $00, $00, $E5, $02, $00, $00, $01, $00, $20, $00, $02, $00, $00, $00, $00, $00
  Data.b $DD, $01, $00, $00, $9C, $03, $00, $00, $01, $00, $00, $00, $02, $00, $00, $00
  Data.b $00, $00, $F4, $01, $00, $00, $A2, $03, $00, $00, $01, $00, $00, $00, $02, $00
  Data.b $00, $00, $00, $00, $5E, $01, $00, $00, $20, $04, $00, $00, $03, $00, $00, $00
  Data.b $02, $00, $00, $00, $00, $00, $23, $00, $00, $00, $24, $04, $00, $00, $03, $00
  Data.b $00, $00, $02, $00, $00, $00, $00, $00, $D8, $00, $00, $00, $4C, $04, $00, $00
  Data.b $03, $00, $00, $00, $02, $00, $00, $00, $00, $00, $B4, $02, $00, $00, $80, $04
  Data.b $00, $00, $04, $00, $00, $00, $02, $00, $00, $00, $00, $00, $CB, $03, $00, $00
  Data.b $94, $04, $00, $00, $04, $00, $00, $00, $02, $00, $00, $00, $00, $00, $0F, $02
  Data.b $00, $00, $D8, $04, $00, $00, $04, $00, $00, $00, $02, $00, $00, $00, $00, $00
  Data.b $82, $01, $00, $00, $DC, $04, $00, $00, $04, $00, $00, $00, $02, $00, $00, $00
  Data.b $00, $00, $A0, $01, $00, $00, $E0, $04, $00, $00, $04, $00, $00, $00, $02, $00
  Data.b $00, $00, $00, $00, $BE, $01, $00, $00, $E4, $04, $00, $00, $04, $00, $00, $00
  Data.b $02, $00, $00, $00, $00, $00, $18, $03, $00, $00, $E8, $04, $00, $00, $04, $00
  Data.b $00, $00, $02, $00, $00, $00, $00, $00, $35, $03, $00, $00, $EC, $04, $00, $00
  Data.b $04, $00, $00, $00, $02, $00, $00, $00, $00, $00, $6A, $01, $00, $00, $F0, $04
  Data.b $00, $00, $04, $00, $00, $00, $02, $00, $00, $00, $00, $00, $2C, $02, $00, $00
  Data.b $F4, $04, $00, $00, $04, $00, $00, $00, $02, $00, $00, $00, $00, $00, $48, $02
  Data.b $00, $00, $F8, $04, $00, $00, $04, $00, $00, $00, $02, $00, $00, $00, $00, $00
  Data.b $66, $02, $00, $00, $FC, $04, $00, $00, $04, $00, $00, $00, $02, $00, $00, $00
  Data.b $00, $00, $7F, $02, $00, $00, $00, $05, $00, $00, $04, $00, $00, $00, $02, $00
  Data.b $00, $00, $00, $00, $E2, $03, $00, $00, $04, $05, $00, $00, $04, $00, $00, $00
  Data.b $02, $00, $65, $6E, $64, $00, $00, $00, $00, $00, $80, $06, $00, $00, $FE, $FF
  Data.b $00, $00, $02, $00, $FC, $03, $00, $00, $5F, $44, $72, $69, $76, $65, $72, $45
  Data.b $6E, $74, $72, $79, $40, $38, $00, $5F, $47, $69, $76, $65, $69, $6F, $55, $6E
  Data.b $6C, $6F, $61, $64, $40, $34, $00, $3F, $3F, $5F, $43, $40, $5F, $31, $43, $47
  Data.b $40, $47, $50, $4C, $4D, $40, $3F, $24, $41, $41, $3F, $32, $3F, $24, $41, $41
  Data.b $44, $3F, $24, $41, $41, $6F, $3F, $24, $41, $41, $73, $3F, $24, $41, $41, $44
  Data.b $3F, $24, $41, $41, $65, $3F, $24, $41, $41, $76, $3F, $24, $41, $41, $69, $3F
  Data.b $24, $41, $41, $63, $3F, $24, $41, $41, $65, $3F, $24, $41, $41, $73, $3F, $24
  Data.b $41, $41, $3F, $32, $3F, $24, $41, $41, $67, $3F, $24, $41, $41, $69, $3F, $24
  Data.b $41, $41, $76, $3F, $24, $41, $41, $65, $3F, $24, $41, $41, $69, $3F, $24, $41
  Data.b $41, $6F, $3F, $24, $41, $41, $3F, $24, $41, $41, $3F, $24, $41, $41, $3F, $24
  Data.b $41, $41, $40, $00, $5F, $53, $65, $74, $49, $4F, $50, $65, $72, $6D, $69, $73
  Data.b $73, $69, $6F, $6E, $4D, $61, $70, $40, $34, $00, $5F, $47, $69, $76, $65, $49
  Data.b $4F, $40, $30, $00, $5F, $47, $69, $76, $65, $69, $6F, $43, $72, $65, $61, $74
  Data.b $65, $44, $69, $73, $70, $61, $74, $63, $68, $40, $38, $00, $3F, $3F, $5F, $43
  Data.b $40, $5F, $31, $42, $4F, $40, $4D, $50, $44, $45, $40, $3F, $24, $41, $41, $3F
  Data.b $32, $3F, $24, $41, $41, $44, $3F, $24, $41, $41, $65, $3F, $24, $41, $41, $76
  Data.b $3F, $24, $41, $41, $69, $3F, $24, $41, $41, $63, $3F, $24, $41, $41, $65, $3F
  Data.b $24, $41, $41, $3F, $32, $3F, $24, $41, $41, $67, $3F, $24, $41, $41, $69, $3F
  Data.b $24, $41, $41, $76, $3F, $24, $41, $41, $65, $3F, $24, $41, $41, $69, $3F, $24
  Data.b $41, $41, $6F, $3F, $24, $41, $41, $3F, $24, $41, $41, $3F, $24, $41, $41, $3F
  Data.b $24, $41, $41, $3F, $24, $41, $41, $3F, $24, $41, $41, $3F, $24, $41, $41, $6F
  Data.b $3F, $24, $41, $41, $3F, $24, $41, $41, $3F, $24, $41, $41, $3F, $24, $41, $41
  Data.b $40, $00, $5F, $49, $4F, $50, $4D, $5F, $6C, $6F, $63, $61, $6C, $00, $5F, $5F
  Data.b $69, $6D, $70, $5F, $5F, $49, $6F, $44, $65, $6C, $65, $74, $65, $44, $65, $76
  Data.b $69, $63, $65, $40, $34, $00, $5F, $5F, $69, $6D, $70, $5F, $5F, $49, $6F, $44
  Data.b $65, $6C, $65, $74, $65, $53, $79, $6D, $62, $6F, $6C, $69, $63, $4C, $69, $6E
  Data.b $6B, $40, $34, $00, $5F, $5F, $69, $6D, $70, $5F, $5F, $52, $74, $6C, $49, $6E
  Data.b $69, $74, $55, $6E, $69, $63, $6F, $64, $65, $53, $74, $72, $69, $6E, $67, $40
  Data.b $38, $00, $5F, $5F, $69, $6D, $70, $5F, $5F, $4D, $6D, $46, $72, $65, $65, $4E
  Data.b $6F, $6E, $43, $61, $63, $68, $65, $64, $4D, $65, $6D, $6F, $72, $79, $40, $38
  Data.b $00, $5F, $4B, $65, $33, $38, $36, $53, $65, $74, $49, $6F, $41, $63, $63, $65
  Data.b $73, $73, $4D, $61, $70, $40, $38, $00, $5F, $4B, $65, $33, $38, $36, $49, $6F
  Data.b $53, $65, $74, $41, $63, $63, $65, $73, $73, $50, $72, $6F, $63, $65, $73, $73
  Data.b $40, $38, $00, $5F, $5F, $69, $6D, $70, $5F, $5F, $49, $6F, $47, $65, $74, $43
  Data.b $75, $72, $72, $65, $6E, $74, $50, $72, $6F, $63, $65, $73, $73, $40, $30, $00
  Data.b $5F, $5F, $69, $6D, $70, $5F, $40, $49, $6F, $66, $43, $6F, $6D, $70, $6C, $65
  Data.b $74, $65, $52, $65, $71, $75, $65, $73, $74, $40, $38, $00, $5F, $5F, $69, $6D
  Data.b $70, $5F, $5F, $49, $6F, $43, $72, $65, $61, $74, $65, $53, $79, $6D, $62, $6F
  Data.b $6C, $69, $63, $4C, $69, $6E, $6B, $40, $38, $00, $5F, $5F, $69, $6D, $70, $5F
  Data.b $5F, $49, $6F, $43, $72, $65, $61, $74, $65, $44, $65, $76, $69, $63, $65, $40
  Data.b $32, $38, $00, $5F, $5F, $69, $6D, $70, $5F, $5F, $4D, $6D, $41, $6C, $6C, $6F
  Data.b $63, $61, $74, $65, $4E, $6F, $6E, $43, $61, $63, $68, $65, $64, $4D, $65, $6D
  Data.b $6F, $72, $79, $40, $34, $00, $5F, $49, $6F, $44, $65, $6C, $65, $74, $65, $44
  Data.b $65, $76, $69, $63, $65, $40, $34, $00, $6E, $74, $6F, $73, $6B, $72, $6E, $6C
  Data.b $5F, $49, $4D, $50, $4F, $52, $54, $5F, $44, $45, $53, $43, $52, $49, $50, $54
  Data.b $4F, $52, $00, $5F, $49, $6F, $44, $65, $6C, $65, $74, $65, $53, $79, $6D, $62
  Data.b $6F, $6C, $69, $63, $4C, $69, $6E, $6B, $40, $34, $00, $5F, $52, $74, $6C, $49
  Data.b $6E, $69, $74, $55, $6E, $69, $63, $6F, $64, $65, $53, $74, $72, $69, $6E, $67
  Data.b $40, $38, $00, $5F, $4D, $6D, $46, $72, $65, $65, $4E, $6F, $6E, $43, $61, $63
  Data.b $68, $65, $64, $4D, $65, $6D, $6F, $72, $79, $40, $38, $00, $5F, $5F, $69, $6D
  Data.b $70, $5F, $5F, $4B, $65, $33, $38, $36, $53, $65, $74, $49, $6F, $41, $63, $63
  Data.b $65, $73, $73, $4D, $61, $70, $40, $38, $00, $5F, $5F, $69, $6D, $70, $5F, $5F
  Data.b $4B, $65, $33, $38, $36, $49, $6F, $53, $65, $74, $41, $63, $63, $65, $73, $73
  Data.b $50, $72, $6F, $63, $65, $73, $73, $40, $38, $00, $5F, $49, $6F, $47, $65, $74
  Data.b $43, $75, $72, $72, $65, $6E, $74, $50, $72, $6F, $63, $65, $73, $73, $40, $30
  Data.b $00, $40, $49, $6F, $66, $43, $6F, $6D, $70, $6C, $65, $74, $65, $52, $65, $71
  Data.b $75, $65, $73, $74, $40, $38, $00, $5F, $49, $6F, $43, $72, $65, $61, $74, $65
  Data.b $53, $79, $6D, $62, $6F, $6C, $69, $63, $4C, $69, $6E, $6B, $40, $38, $00, $5F
  Data.b $49, $6F, $43, $72, $65, $61, $74, $65, $44, $65, $76, $69, $63, $65, $40, $32
  Data.b $38, $00, $5F, $4D, $6D, $41, $6C, $6C, $6F, $63, $61, $74, $65, $4E, $6F, $6E
  Data.b $43, $61, $63, $68, $65, $64, $4D, $65, $6D, $6F, $72, $79, $40, $34, $00, $4E
  Data.b $55, $4C, $4C, $5F, $49, $4D, $50, $4F, $52, $54, $5F, $44, $45, $53, $43, $52
  Data.b $49, $50, $54, $4F, $52, $00, $7F, $6E, $74, $6F, $73, $6B, $72, $6E, $6C, $5F
  Data.b $4E, $55, $4C, $4C, $5F, $54, $48, $55, $4E, $4B, $5F, $44, $41, $54, $41, $00
  Data.b $01, $00, $00, $00, $10, $01, $00, $00, $00, $04, $DC, $88, $2E, $5C, $69, $33
  Data.b $38, $36, $5C, $66, $72, $65, $65, $5C, $67, $69, $76, $65, $69, $6F, $2E, $73
  Data.b $79, $73, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $9F, $02, $00, $00, $20, $00, $00, $00, $00, $00, $00, $00, $01, $00, $00, $00
  Data.b $BF, $02, $00, $00, $08, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
  Data.b $C7, $02, $00, $00, $1E, $00, $00, $00, $00, $00, $00, $00, $02, $00, $00, $00
  Data.b $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
EndDataSection 
Viel Spaß!

Gruß
Helle

Verfasst: 02.03.2008 13:48
von NicTheQuick
Coole Sache, werde ich demnächst mal testen, wenn ich wieder an meinem
Windows-Rechner sitze.

Verfasst: 02.03.2008 14:52
von DarkDragon
:D Dann braucht man ja inpout32.dll garnicht mehr.

Verfasst: 02.03.2008 15:03
von Falko
Sowas ähnliches hat ABBKlaus hier geschrieben.
Wenn ich das richtig gesehen habe, wird hierdurch die
Inpout32.dll auch nicht mehr benötigt.

http://www.purebasic.fr/english/viewtop ... t=inpout32

Beides sehr brauchbar und unabhängig von externen DLL's :allright: .

Aber Helles Source mit der Urmutter aller Portzugriffe bietet ja einiges mehr.
Danke :allright:

[Edit]
Habe es erstmal unter Vista getestet.
Unter'm Benutzerzugriff direkt aus PB gestartet, wird die Sys nicht erkannt.
Es funktioniert erst, wenn man den Source zur Exe compiliert und
ihn dann als Admin ausführen startet.


Gruß Falko

Verfasst: 02.03.2008 19:52
von Helle
Obwohl ich die Beiträge von ABBKLaus sehr schätze (der Mann hat richtig Ahnung!) ist mir der von Falko angeführte irgendwie durch die Lappen gegangen. Hätte mir sicher einiges an Arbeit erspart. Aber so ist eben eine (andere) Variante entstanden, das Prinzip ist natürlich identisch. Funktionieren wird es sicherlich mit mehreren (Portzugriff-) Sys-Dateien, wobei ich aber für die giveio keine rechtlichen Einschränkungen gefunden habe (wenn wer mehr weiß, bitte melden).
Als ich den Code von ABBKLaus sah fiel mir übrigens auf, daß zum Platz sparen die DataSection natürlich nicht Byte-weise angelegt werden muß (Long oder gleich Quad).

Gruß
Helle

Verfasst: 02.03.2008 21:01
von Rings
Giveio wird meiner meinung nicht mit ner dll funktionieren.....