Aktuelle Zeit: 27.10.2020 16:55

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Portzugriff (z.B. BIOS auslesen) mit dem "Oldie" G
BeitragVerfasst: 02.03.2008 13:42 
Offline
Benutzeravatar

Registriert: 11.11.2004 16:13
Wohnort: Magdeburg
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:
;- 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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 02.03.2008 13:48 
Offline
Ein Admin
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Saarbrücken
Coole Sache, werde ich demnächst mal testen, wenn ich wieder an meinem
Windows-Rechner sitze.

_________________
Ubuntu Gnome 20.04 LTS x64, PureBasic 5.72 x64 (außerdem 4.41, 4.50, 4.61, 5.00, 5.10, 5.11, 5.21, 5.22, 5.30, 5.31, 5.40, 5.50, 5.60, 5.71b2)
"Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 02.03.2008 14:52 
Offline
Benutzeravatar

Registriert: 29.08.2004 08:37
:D Dann braucht man ja inpout32.dll garnicht mehr.

_________________
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 02.03.2008 15:03 
Offline
Admin
Benutzeravatar

Registriert: 29.08.2004 11:27
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

_________________
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 02.03.2008 19:52 
Offline
Benutzeravatar

Registriert: 11.11.2004 16:13
Wohnort: Magdeburg
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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 02.03.2008 21:01 
Offline
Benutzeravatar

Registriert: 29.08.2004 08:48
Giveio wird meiner meinung nicht mit ner dll funktionieren.....

_________________
Rings hat geschrieben:
ziert sich nich beim zitieren


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye