USB Interface mit 4 IN, 6 Out + 1 x AD Wandler

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
mpz
Beiträge: 497
Registriert: 14.06.2005 15:53
Computerausstattung: Win 10 Pro, 16 GB Ram, Intel I5 CPU und TI1070 Grafikkarte, PB 5.73 / 6.00 beta4
Wohnort: Berlin, Tempelhof

USB Interface mit 4 IN, 6 Out + 1 x AD Wandler

Beitrag von mpz »

Hallo Leute,

ich habe gerade meine Project mit einem USB-HDI Interface unter Windows abgeschlossen. Ich habe einen PIC Microcontroller an den USB Port des PCs geschaltet um Steuerungsaufgaben zu erledigen. Das Ergebnis ist eine Interface mit 4 In, 6 Out + 1x AD Wandler. Die Stromversorgung erfolgt über den USB Port. Der Bauteileaufwand ist gering, der PIC 18F2550 kostet z.b. 7.70 Euro bei www.reichelt.de.

Der erste Code beinhaltet die Steuerungsoberfläche für Windows.
Der zweite Code beinhaltet das Stromschaltbild, den Hexcode (Betriebssystem) für den Microcontroller und eine Grafik mit der Einstellung für den PIC Programmierer.

Alle Angaben sind natürlich ohne Gewähr!

Gruß
MPZ

Steuerungsoberfläche

Code: Alles auswählen

; "MPZ PIC IO INTERFACE.pb"
; 
; PowerBasic Example um ein PIC 18F2550 über USB als I/O Interface anzusteuern.
; Der PIC 18F2550 besitzt 24x I/O´s und 10x 10bit AD´s
; Dieses Programm erlaubt die Eingabe von 4x digitalen Eingängen
;                                         6x digitalen Ausgängen  
;                                         1x AD Wandlung mit 8 bit
;
; PowerBasic Example to use a PIC 18F2550 with USB as I/O Interface.
; The PIC 18F2550 has 24x I/O´s and 10x 10bit AD´s
; This Programm works with 4x digital Inputs
;                          6x digital Outputs  
;                          1x AD conversion with 8 bit

;  
; Version 1.00 by MPZ Okt.2006
; for PB 4.00
; 
; benötigt wird die mcHID.dll von der Firma Mecanique. Die mcHID Library ist 
; Bestandteil der EasyHID Software:
; You need the mcHID.dll from the company Mecanique. The mcHID Library is included
; in the EasyHID Software:
; http://www.mecanique.co.uk/software/EasyHID.zip 
;
; Ein direkter Download der DLL ist über den folgenden Link möglich
; Direct downloadlink 
; http://www.docpro.com.br/arquivos/mcHID.zip
; 

Enumeration
  #Window_0
  #Text_Status
  #Text_DIGI_IN
  #Listview_INPUT
  #Text_AN
  #Analog_AD
  #Text_OUT
  #Button_OUT1
  #Button_OUT2
  #Button_OUT3
  #Button_OUT4
  #Button_OUT5
  #Button_OUT6
EndEnumeration


; Global

;{/ Globale Variablen
Global pVendorID.l, pProductID.l, DeviceHandle.l, ProductName.s
Global USB_HID.l,DIGITAL_OUT.b
Global Dim BufferIn.b(8),Dim BufferOut.b(8)

#WM_APP = 32768
#WM_HID_EVENT = #WM_APP + 200
#NOTIFY_PLUGGED = 1
#NOTIFY_UNPLUGGED = 2
#NOTIFY_CHANGED = 3
#NOTIFY_READ = 4

#VendorID = 6017    ; Vendor ID "MPZ PIC I/O"
#ProductID = 2000   ; ProductID "MPZ PIC I/O"

ProductName.s = Space(256) 

;BufferIn.b(8), BufferOut (8)
;Buffer (0) = Controllregister
;Buffer (1) = Outregister
;Buffer (2) = ADregister
;Buffer (3) = INregister
;Buffer (4) = free for Future
;}

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 310, 185, 391, 222, "MPZ PIC I/O Interface",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_WindowCentered )
    If CreateGadgetList(WindowID(#Window_0))
      TextGadget(#Text_Status, 135, 10, 120, 20, "No Device", #PB_Text_Center | #PB_Text_Border)
      TextGadget(#Text_DIGI_IN, 30, 40, 330, 12, "DIGITAL IN 1 - IN 4 / TIME", #PB_Text_Center)
      ListViewGadget(#Listview_INPUT, 30, 56, 330, 50)
      TextGadget(#Text_AN, 30, 110, 330, 12, "ANALOG IN ", #PB_Text_Center)
      ProgressBarGadget(#Analog_AD, 30, 130, 330, 20, 0, 127, #PB_ProgressBar_Smooth)
      TextGadget(#Text_OUT, 20, 160, 350, 20, "DIGITAL OUT 1 - OUT6", #PB_Text_Center)
      ButtonGadget(#Button_OUT1, 20, 180, 50, 30, "OUT 1", #PB_Button_Default | #PB_Button_Toggle)
      ButtonGadget(#Button_OUT2, 80, 180, 50, 30, "OUT 2", #PB_Button_Default | #PB_Button_Toggle)
      ButtonGadget(#Button_OUT3, 140, 180, 50, 30, "OUT 3", #PB_Button_Default | #PB_Button_Toggle)
      ButtonGadget(#Button_OUT4, 200, 180, 50, 30, "OUT 4", #PB_Button_Default | #PB_Button_Toggle)
      ButtonGadget(#Button_OUT5, 260, 180, 50, 30, "OUT 5", #PB_Button_Default | #PB_Button_Toggle)
      ButtonGadget(#Button_OUT6, 320, 180, 50, 30, "OUT 6", #PB_Button_Default | #PB_Button_Toggle)
     EndIf
     ProcedureReturn = 1
  EndIf
EndProcedure

;{/ DLL LIB

Prototype  hidConnect (pHostWin.l); As Boolean
Prototype  hidDisconnect (); As Boolean
Prototype  hidRead (pHandle.l, pData.b); As Boolean
Prototype  hidWrite (pHandle.l, pData.b); As Boolean
Prototype  hidReadEx (pVendorID.l, pProductID.l, pData.b); As Boolean
Prototype  hidWriteEx (pVendorID.l, pProductID.l, ByRef.b); As Boolean
Prototype  hidGetVendorName (pHandle.l, pText.s, pLen.l); As Long
Prototype  hidGetProductName (pHandle.l, pText.s, pLen.l); As Long
Prototype  hidGetSerialNumber (pHandle.l, pText.s, pLen.l); As Long
Prototype  hidGetVendorID (pHandle.l); As Long
Prototype  hidGetProductID (pHandle.l); As Long
Prototype  hidGetVersion (pHandle.l); As Long
Prototype  hidGetInputReportLength (pHandle.l); As Long
Prototype  hidGetOutputReportLength (pHandle.l); As Long
Prototype  hidGetHandle (pVendoID.l, pProductID.l); As Long
Prototype  hidGetItem (pIndex.l); As Long
Prototype  hidGetItemCount (); As Long
Prototype  hidSetReadNotify (pHandle.l, pValue.b);
Prototype  hidIsReadNotifyEnabled (pHandle.l); As Boolean
Prototype  hidIsAvailable (pVendorID.l, pProductID.l);  As Boolean


Define mcHID_DLL.l = OpenLibrary(#PB_Any, "mcHID.dll") 

If mcHID_DLL 
    Global hidConnect.hidConnect = GetFunction(mcHID_dll,"Connect") ; (ByVal pHostWin As Long) As Boolean
    Global hidDisconnect.hidDisconnect = GetFunction(mcHID_dll,"Disconnect");  () As Boolean
    Global hidRead.hidRead = GetFunction(mcHID_dll,"Read");  (ByVal pHandle As Long, ByRef pData As Byte) As Boolean
    Global hidWrite.hidWrite = GetFunction(mcHID_dll,"Write");  (ByVal pHandle As Long, ByRef pData As Byte) As Boolean
    Global hidReadEx.hidReadEx = GetFunction(mcHID_dll,"ReadEx");  (ByVal pVendorID As Long, ByVal pProductID As Long, ByRef pData As Byte) As Boolean
    Global hidWriteEx.hidWriteEx = GetFunction(mcHID_dll,"WriteEx");  (ByVal pVendorID As Long, ByVal pProductID As Long, ByRef pData As Byte) As Boolean
    Global hidGetVendorName.hidGetVendorName = GetFunction(mcHID_dll,"GetVendorName");  (ByVal pHandle As Long, ByVal pText As String, ByVal pLen As Long) As Long
    Global hidGetProductName.hidGetProductName = GetFunction(mcHID_dll,"GetProductName");  (ByVal pHandle As Long, ByVal pText As String, ByVal pLen As Long) As Long
    Global hidGetSerialNumber.hidGetSerialNumber = GetFunction(mcHID_dll,"GetSerialNumber");  (ByVal pHandle As Long, ByVal pText As String, ByVal pLen As Long) As Long
    Global hidGetVendorID.hidGetVendorID = GetFunction(mcHID_dll,"GetVendorID");  (ByVal pHandle As Long) As Long
    Global hidGetProductid.hidGetProductid = GetFunction(mcHID_dll,"GetProductID");  (ByVal pHandle As Long) As Long
    Global hidGetVersion.hidGetVersion = GetFunction(mcHID_dll,"GetVersion"); (ByVal pHandle As Long) As Long
    Global hidGetInputReportLength.hidGetInputReportLength = GetFunction(mcHID_dll,"GetInputReportLength");  (ByVal pHandle As Long) As Long
    Global hidGetOutputReportLength.hidGetOutputReportLength = GetFunction(mcHID_dll,"GetOutputReportLength");  (ByVal pHandle As Long) As Long
    Global hidGetHandle.hidGetHandle = GetFunction(mcHID_dll,"GetHandle");  (ByVal pVendoID As Long, ByVal pProductID As Long) As Long
    Global hidGetItem.hidGetItem = GetFunction(mcHID_dll,"GetItem");  (ByVal pIndex As Long) As Long
    Global hidGetItemCount.hidGetItemCount = GetFunction(mcHID_dll,"GetItemCount");  (ByVal pIndex As Long) As Long
    Global hidSetReadNotify.hidSetReadNotify = GetFunction(mcHID_dll,"SetReadNotify"); ByVal pHandle As Long, ByVal pValue As Boolean)
    Global hidIsReadNotifyEnabled.hidIsReadNotifyEnabled = GetFunction(mcHID_dll,"IsReadNotifyEnabled");  (ByVal pHandle As Long) As Boolean
    Global hidIsAvailable.hidIsAvailable = GetFunction(mcHID_dll,"IsAvailable"); (ByVal pVendorID As Long, ByVal pProductID As Long) As Boolean
Else
    MessageRequester("Fehlermeldung", "Das Programm konnte die mcHID.dll Datei nicht öffnen", #PB_MessageRequester_Ok)
    End
EndIf 
;}

ProcedureDLL mcHID_Free(); DLL FREE
  If mcHID_DLL
    CloseLibrary(#PB_Any)
  EndIf
  XLTable_DLL = 0
EndProcedure

;- Window Callback 
Procedure WinProc(hWnd,Msg,wParam,lParam) 
 result = #PB_ProcessPureBasicEvents 
 
 If Msg = #WM_HID_EVENT 
       
       Select wParam
           ; HID device has been plugged message...
        Case #NOTIFY_PLUGGED
           ;HID device has been plugged
           DeviceHandle = hidGetHandle(#VendorID, #ProductID)
           If DeviceHandle
              hidGetProductName (DeviceHandle.l,ProductName,256) 
              SetGadgetText(#Text_Status, ProductName)   
           EndIf
        Case #NOTIFY_UNPLUGGED
           ;HID device has unplugged
           DeviceHandle = hidGetHandle(#VendorID, #ProductID)
           If Not DeviceHandle
              SetGadgetText(#Text_Status, "No Device")
           EndIf
        Case #NOTIFY_CHANGED
           ;HID device has been changed
           If DeviceHandle 
              hidSetReadNotify (DeviceHandle, #True) ;read event...
              BufferOut(0) = 0
              BufferOut(1) = 0
              hidWrite (DeviceHandle.l,@BufferOut()) ; All OUTPUT = 0
           EndIf
         ;DeviceHandle = hidGetHandle(#VendorID, #ProductID)
         ;hidSetReadNotify (DeviceHandle, #True) ! IMPORTANT ! Read works only With this flag
        Case #NOTIFY_READ
           ; READ works only if the hidSetReadNotify flag is set 
           If hidRead(DeviceHandle, @BufferIn(0))
              ;AddGadgetItem(#Listview_INPUT,0, "Read: "+Str(BufferIn(0)) +"/"+ Str(BufferIn(1))+"/"+Str(BufferIn(2))+"/"+Str(BufferIn(3))+"/"+Str(BufferIn(4))+"/"+Str(BufferIn(5))+"/"+Str(BufferIn(6))+"/"+Str(BufferIn(7))+"/"+Str(BufferIn(8)))
              If BufferIn(3) = 1 
                 AddGadgetItem(#Listview_INPUT,0, "Button 1 at "+FormatDate("%hh:%ii:%ss", Date()))             
              ElseIf BufferIn(3) = 2
                 AddGadgetItem(#Listview_INPUT,0, "Button 2 at "+FormatDate("%hh:%ii:%ss", Date()))             
              ElseIf BufferIn(3) = 3
                 AddGadgetItem(#Listview_INPUT,0, "Button 3 at "+FormatDate("%hh:%ii:%ss", Date()))             
              ElseIf BufferIn(3) = 4
                 AddGadgetItem(#Listview_INPUT,0, "Button 4 at "+FormatDate("%hh:%ii:%ss", Date()))
              ElseIf BufferIn(3) = 64
                 SetGadgetState   (#Analog_AD,BufferIn(2))
              EndIf  
           Else 
              AddGadgetItem(#Listview_INPUT,0, "Read Error!")
           EndIf
        EndSelect
   
   EndIf

  
  ProcedureReturn result 
EndProcedure 

;{ Mainunit
If Open_Window_0()

hidconnect (WindowID(#Window_0))
SetWindowCallback(@WinProc())

  Repeat
    EventID = WaitWindowEvent()

    Select EventID
  
    Case #PB_Event_Gadget
  
      Select EventGadget()
          
      Case #Button_OUT1
          If GetGadgetState(#Button_OUT1)
             DIGITAL_OUT = DIGITAL_OUT | %000001
          Else
             DIGITAL_OUT = DIGITAL_OUT & %111110
          EndIf
          BufferOut(0) = 0
          BufferOut(1) = DIGITAL_OUT
          hidWrite (DeviceHandle.l,@BufferOut()) ; Send Out 

      Case #Button_OUT2
          If GetGadgetState(#Button_OUT2)
             DIGITAL_OUT = DIGITAL_OUT | %000010
          Else
             DIGITAL_OUT = DIGITAL_OUT & %111101
          EndIf
          BufferOut(0) = 0
          BufferOut(1) = DIGITAL_OUT
          hidWrite (DeviceHandle.l,@BufferOut()) ; Send Out

      Case #Button_OUT3
          If GetGadgetState(#Button_OUT3)
             DIGITAL_OUT = DIGITAL_OUT | %000100
          Else
             DIGITAL_OUT = DIGITAL_OUT & %111011
          EndIf
          BufferOut(0) = 0
          BufferOut(1) = DIGITAL_OUT
          hidWrite (DeviceHandle.l,@BufferOut()) ; Send Out

      Case #Button_OUT4
          If GetGadgetState(#Button_OUT4)
             DIGITAL_OUT = DIGITAL_OUT | %001000
          Else
             DIGITAL_OUT = DIGITAL_OUT & %110111
          EndIf
          BufferOut(0) = 0
          BufferOut(1) = DIGITAL_OUT
          hidWrite (DeviceHandle.l,@BufferOut()) ; Send Out

      Case #Button_OUT5
          If GetGadgetState(#Button_OUT5)
             DIGITAL_OUT = DIGITAL_OUT | %010000
          Else
             DIGITAL_OUT = DIGITAL_OUT & %101111
          EndIf
          BufferOut(0) = 0
          BufferOut(1) = DIGITAL_OUT
          hidWrite (DeviceHandle.l,@BufferOut()) ; Sende Daten zu einem HID Gerät

      Case #Button_OUT6
          If GetGadgetState(#Button_OUT6)
             DIGITAL_OUT = DIGITAL_OUT | %100000
          Else
             DIGITAL_OUT = DIGITAL_OUT & %011111
          EndIf
          BufferOut(0) = 0
          BufferOut(1) = DIGITAL_OUT
          hidWrite (DeviceHandle.l,@BufferOut()) ; Sende Daten zu einem HID Gerät
     
    EndSelect
  EndSelect
  
Until EventID = #PB_Event_CloseWindow

  hidDisconnect ()
  mcHID_Free()
EndIf
End
;}
;
Stromlaufplan
Betriebssystem PIC 18F2550
Einstellung für den PIC Programmierer

Code: Alles auswählen

;*****************************************************************************************************
;********** Diese Datei wurde mit File2PBSource*******************************************************
;*****************************************************************************************************
; This Program extract the programming HEX File for the PIC 18F2550,
; Layout of the USB interface and the program settings for the pic programer

; Version 1.00 by MPZ Okt.2006
; for PB 4.00


Procedure Extract_mpz_pic_io_HEX(Zielpfad.s, Modus.l) ;Modus.l -> 0=Datei Extrahieren ; 1=Speicheradresse als Rückgabewert ; 2=Dateilänge als Rückgabewert ; 3=Kompressionsstatus als Rückgabewert (1=komprimiert, 0=unkompriniert)
  If Right(Zielpfad.s, 1) <> "\"
   Zielpfad.s+"\"
  EndIf
  StartBuffer.l   = ?File853725336
  BufferLength.l  = ?Ende853725336-?File853725336
  Restore start853725336
  Read OriginalLength.l
  Read KompressStatus.b
  If Modus.l = 1   ;Speicheradresse als Rückgabewert
    If KompressStatus.b = 0
      ProcedureReturn StartBuffer.l
    Else
      *FileBuffer = AllocateMemory(OriginalLength)
      If *FileBuffer
        Unpacklength.l = UnpackMemory(StartBuffer, *FileBuffer)
        If Unpacklength.l = OriginalLength
          ProcedureReturn *FileBuffer
        EndIf
      EndIf
    EndIf
  ElseIf Modus.l = 2   ;Dateilänge als Rückgabewert
    ProcedureReturn OriginalLength.l
  ElseIf Modus.l = 3 ;Kompressionsstatus als Rückgabewert (1=komprimiert, 0=unkompriniert)
    ProcedureReturn KompressStatus.b
  ElseIf Modus = 0 ;Extrahiere die Datei
    If FileSize(Zielpfad.s+"mpz_pic_io.HEX") >= 0
      ProcedureReturn 2
    EndIf
    If KompressStatus = 0
      If CreateFile(0, Zielpfad.s+"mpz_pic_io.HEX")
        WriteData(0, StartBuffer.l, OriginalLength)
        CloseFile(0)
      EndIf
    ElseIf KompressStatus = 1 ;Entpacke erst die daten
      *ZielBuffer = AllocateMemory(OriginalLength)
      If *ZielBuffer
        Unpacklength.l = UnpackMemory(StartBuffer, *ZielBuffer)
        If Unpacklength.l = OriginalLength
          If CreateFile(0, Zielpfad.s+"mpz_pic_io.HEX")
            WriteData(0, *ZielBuffer, Unpacklength.l)
            CloseFile(0)
            FreeMemory(*ZielBuffer)
          EndIf
        EndIf
      EndIf
    EndIf
  EndIf

  DataSection
  Start853725336:
  Data.l 7362   ;Originallänge der Datei in Byte
  Data.b 1   ;Datei ist komprimiert
  File853725336:   ; Packrate: 42.03%  OriginalSize: 7362  PackSize: 3094
  Data.l 482493258, 663355392, 1481837440, 1152000005, -881306605, 175112555, 1250637835, -1068678400, -1163486277, -1982060962, 638496772, 705404088, 840537574, -1956641952, 1522809929, -222817787, 609233602, -2080103095, -1387449344, 829161840, 1844330513, -1472907450, -1600262587, 2004298628, 1265549619, 1091524001, -977176920, -1436919922, 159630893, -1876548177, -1534938757, -603253357, 592442042, 207309698, 1611945397, -890546925, -1189763066, 108691572, 1547604017, 1043430033, 172820493, 35155286, -1888946810, 1152978058, -1591732204, 1668416914, -1826306635, 1419108395, -1800552295, -1403293656, -384826606, 482482506, -1048194500, 693941586, -753642662, -1809317305, 2013541656, -1789762163, -1293521196, 1782889911, -1432757244, 1184819241, 1802804097, -1326386805
  Data.l 702106262, 876229034, -1258128631, 1101371148, 1784001859, -2066451851, -617779765, -1514456240, 876631368, 717559009, -1825017427, 1489090002, 1398850873, -701332841, -1519493096, 249614941, 2139283164, 141247056, -1831971168, 1751401300, 663538205, 1510517586, 1471197841, -1940236856, 719668287, 1369638417, 1720131924, -1721001621, -1703550332, -372966676, 1779581525, 1796244713, -827545935, -1060830099, -1532314944, 1966975314, -111768995, -2144243067, -732181039, 764980834, -1280163050, -242584528, 1658489377, -1297780686, -1450595014, 277099190, -1290376250, -709536072, 142726537, -375264875, 1865075298, -1387333628, 1753159862, 1027713975, 1160456922, -1795615125, 394694986, 829266599, -995298037, 1437032092, -1857759606, -356246976, 1368124276, 729474793
  Data.l -2061872483, -1928010517, -1167181499, -1567863980, 1796609293, 1390191861, 876266389, -1985598883, 1026590419, -1231607395, 875124136, 1565660458, 504002201, 1580558480, 1131069450, -582372276, -664698682, 1528410339, 1649947372, 1434797228, 139814987, -1401672333, 757000246, -1631198826, 715766085, -917031071, -1604976110, 190062754, 1234624572, -1081027573, 1635462469, 1712386861, 1750562502, 1825270483, -445031375, 1268278030, 279483412, -1253424338, 1882341061, 493430202, -515790695, -1249149692, -1268636994, 1487432358, 309155245, -701678077, 943075473, -1371171544, -1976757188, 493752394, 1121797468, -495592275, -1590391984, 630551402, 2025586888, -452287231, 1528447662, 1112134444, -1263513363, 1081442400, 154403712, -167826732, -1602168466, 562123821
  Data.l -1521276040, -1708062620, -1029612958, -1934342811, -682977150, -617507352, -1506502219, -2113066660, -977981173, 2013951310, -1447708093, 26444668, -761777390, 189872421, 517098076, 714924541, 1142195410, -793094103, 1209551194, -736670023, 2124229290, 1399238407, 914489476, 383215204, -1521824861, 794119619, -1152955897, -1974821298, 1238229704, -2131299998, -231473531, 310752498, 275602707, 349572545, -1927520211, 655904938, 1642357106, -1573022262, -216259216, -646360351, 695514978, 1612239119, -781152743, 273383685, -1069530453, 764248743, -1991384650, 844571229, 1510859447, 566430163, 242576901, 1527931778, 1657362220, -947633142, -1471539903, -1572052012, 1208333578, 662264601, -1810228228, -89368858, 364951395, -1827222488, 627721304, 311348072
  Data.l 758027864, -1680010388, -2110256989, 1713918646, 2087206283, 1357730272, 212795050, -645446326, -602991146, -1604782646, 834163330, 1212817283, -1233890130, -1532525207, 1619210333, -1453451069, 43938501, -1371761984, 901297600, 403113633, 692721848, -648880116, -1000333726, 672170798, 1977670366, -2112162326, 1424658105, 541371222, 1968543156, 1297494177, 977754114, 97069086, -1583848808, 1214854462, -535678773, -348710228, 590011432, 1527204392, 757408560, 1792947643, -954084794, -649666358, 1794715976, -1463481631, 920020377, -1440537260, 1430363152, -920614354, 1181612124, -1043597912, 634733027, 1567759932, -2106040087, 1130712258, -2042428309, -1183428046, -2099737864, 239258256, 26317681, -1573188768, 966095188, 1429035948, 2060504245, -709648253
  Data.l -1671085834, 1796609364, 731132093, -1162033327, 925612679, -1929050039, -264698526, -715830573, -871483307, -245354865, 370002575, 906863, -2015865067, -884997630, 1079686692, 1124872722, -2042204642, 1134771770, -919980909, 1108252338, -2099962789, -1466071352, -55647856, 1426135134, 579644906, -1992546414, -773999467, 537308147, 497644769, -624863478, 1983666936, 1554332015, -172244927, -724726440, -1955985501, -1407497143, 25945423, 1164699048, 308743122, -891676312, -892007752, 1103235442, 259963407, -600722427, -2112196542, -1416270666, -1372761693, 498437539, 1922029322, -659129021, 960717254, -1307002800, -2138676232, 127810471, -978133723, 1065693016, 1184356872, 25238163, -1438855103, 10284030, 1456769247, -1643586399, -1681351499, 379758034
  Data.l -737643325, -564012536, 1461268132, -1798913431, 615013037, -1758510421, -511137472, 1447897302, 305422344, -1794856438, -1752059314, 496800541, 1951714320, -804730597, 945225346, 78146512, -647108243, -1657886366, -669512622, -1318266307, -1271117481, 412539416, -445706586, -747524798, 1532288042, 968217228, -600726956, 1376290762, -367187405, -319835491, 1491285014, -1214539986, -341127743, -1566017197, -185808587, 900144822, -1807983786, -1891039149, 979037186, 382093271, -1159089005, -1710860885, 415623200, 1093672516, 176559533, 1854912772, -1454887613, 1886182766, 839500041, -1874589476, -655698048, 1229035106, 281034890, -1739250084, 981582946, -1374025207, -1464677797, 1812445380, -1732883689, 434842347, -897206188, 2131588412, 373375600, -1481091793
  Data.l 1516022128, 1230326875, -2067779471, -1666437540, -1474259670, 852546052, 576066382, -898503843, -1601829955, -1136291051, -1152759495, 999826772, -1368481608, -869904850, -521385336, -691000590, -1551496249, 17334932, 586322002, 2023973512, -2059040420, 657018802, -900967519, 31294144, 675958122, 1550014986, -909006828, -1967701333, 768751149, -1518006434, -872282582, -1044220251, -1081538015, -626956962, 89856866, 1682841716, -98200571, 1752352100, 498690787, -767496123, 282507952, 880716126, -1791169453, -2029904128, -942218258, 1057471667, 1158336662, 352350900, 1176480125, -1372546185, -392980669, -1605716348, -622800942, -1837100021, 1327266840, 1121207308, 1520595426, -1133518671, 727030136, 2095131983, 1455059669, 1495750486, -812242756, -1044793339
  Data.l -1453556615, 1848194245, 1146063036, 1540867903, -1197370806, -2012725743, -118695281, 1125579044, -1898910043, -2134583576, 1923059205, -2018787767, -1373671114, -1205278061, -1276887748, 899873060, 1123430228, 1954317909, 1712880786, -1821473309, -103827910, -144465239, -1451962159, -2024757038, -583028442, 62681259, -1540194731, -1790530203, -1467575916, 1350370569, 1252297442, 1531158754, -1462654188, -1314247863, -1581071492, 360067858, -920351653, 1901354865, 1924289823, 384200773, -1470875087, 1795561654, -1839631389, 11366556, -1294992804, 382717452, -159361597, 191399944, -1047411542, 1249332142, 1425828546, 1590406491, -334871605, 1916052160, -996305182, -1798559139, -1597995422, 1381325613, -1049982888, -1182159070, -2061118744, 76748117, -626981981, -296506622
  Data.l -678918591, -460934616, 153239500, 1554504041, -1762905094, -873165596, -89934699, -1111388621, -1754646238, 1524356520, 987614016, 1212583552, 1629754454, 1117163345, -856803165, -1475810034, -2059082892, -1827270860, -1885932900, -301017336, 1530169508, -1782914388, 491470593, -1253439718, 2127336577, 1765042861, 713539908, 53162221, 781272676, 1910806889, -2105010266, -709884872, 39156046, -1551329226, -1501288060, -1495986947, 883678635, -621784654, -2089702046, 1821187231, -451299980, 1561073405, 1192614325, -1051289492, -1269219656, -1437277831, 1957395138, 207092884, 1896946467, -1692159636, -1265257129, 923485068, 1488268977, -636629560, 1884824117, 768397719, -655731151, 982390626, 1914257576, 70628881, -696106648, 1981311063, -1095858751, -1231808671
  Data.l -1731941515, 1398103656, 559167740, -993383889, -2109797702, 622679863, 1808015189, -2055509482, 53127173, -1341870066, -659149632, 713328237, 1179220017, -1282675996, 1887125248, -954400113, 137593363, -443458389, -1183693134, 1913286309, 993248419, -1235514331, -1270462952, 908738822, 1662244201, 1427178892, 840779866, 651082104, -1650794204, 179304562, 1267118418, -550743647, 1259713761, 2119342285, 179481716, -361449107, 782869917, 1381876137, 709923123, 2009411946, -512089818, 1486831110, 1846912305, 1452445211, -1720696248, -248492508, 923487546, -533552982, -1940204248, 1288580174, -1202245667, 497281125, 706849387, -279702353, -1940728052, 325034020, -821941101, 2125431974, -1899900475, -1278001927, -51056298, 56412815, 1384688812, 1323184493
  Data.l -1957628784, 1158212337, 1921928863, -125783770, 861057388, 1710017378, 1783903585, 811262038, -730068288, -764896158, -1218166715, 81222302, -782849824, 876261250, -2093859573, 2064878565, 986403788, -1847937204, -1438103206, -1104445143, 1599908675, 1557569533, -768945937, 128590533, -968252965, -246171317, -455920578, 478914965, -666456623, 1701905573, -300259209, -1217843285, 1758993890, -1022898249, 1135186856, -680084149, 245854875, 1537534341, -83600090, -919710348, -1903451990, 687357268, 158413658, -1542029119, 542667921, 761741080, 1490395974, 289423828, 1461118346, -1720622747, 1083974759, 1373199389, -412937209, -1523930156, -841539550, -885184170, -1092790724, -1579434917, -2134102690, -1999829846, 1291782189, -297571967, 1574847400, -1731165380
  Data.l 317279431, 84542336, -1291827824, 2021184515, 38112, 61440
  Ende853725336:
  EndDataSection
ProcedureReturn 1
EndProcedure

Procedure Extract_MPZ_PIC_IO_JPG(Zielpfad.s, Modus.l) ;Modus.l -> 0=Datei Extrahieren ; 1=Speicheradresse als Rückgabewert ; 2=Dateilänge als Rückgabewert ; 3=Kompressionsstatus als Rückgabewert (1=komprimiert, 0=unkompriniert)
  If Right(Zielpfad.s, 1) <> "\"
   Zielpfad.s+"\"
  EndIf
  StartBuffer.l   = ?File1989273772
  BufferLength.l  = ?Ende1989273772-?File1989273772
  Restore start1989273772
  Read OriginalLength.l
  Read KompressStatus.b
  If Modus.l = 1   ;Speicheradresse als Rückgabewert
    If KompressStatus.b = 0
      ProcedureReturn StartBuffer.l
    Else
      *FileBuffer = AllocateMemory(OriginalLength)
      If *FileBuffer
        Unpacklength.l = UnpackMemory(StartBuffer, *FileBuffer)
        If Unpacklength.l = OriginalLength
          ProcedureReturn *FileBuffer
        EndIf
      EndIf
    EndIf
  ElseIf Modus.l = 2   ;Dateilänge als Rückgabewert
    ProcedureReturn OriginalLength.l
  ElseIf Modus.l = 3 ;Kompressionsstatus als Rückgabewert (1=komprimiert, 0=unkompriniert)
    ProcedureReturn KompressStatus.b
  ElseIf Modus = 0 ;Extrahiere die Datei
    If FileSize(Zielpfad.s+"MPZ PIC IO.JPG") >= 0
      ProcedureReturn 2
    EndIf
    If KompressStatus = 0
      If CreateFile(0, Zielpfad.s+"MPZ PIC IO.JPG")
        WriteData(0, StartBuffer.l, OriginalLength)
        CloseFile(0)
      EndIf
    ElseIf KompressStatus = 1 ;Entpacke erst die daten
      *ZielBuffer = AllocateMemory(OriginalLength)
      If *ZielBuffer
        Unpacklength.l = UnpackMemory(StartBuffer, *ZielBuffer)
        If Unpacklength.l = OriginalLength
          If CreateFile(0, Zielpfad.s+"MPZ PIC IO.JPG")
            WriteData(0, *ZielBuffer, Unpacklength.l)
            CloseFile(0)
            FreeMemory(*ZielBuffer)
          EndIf
        EndIf
      EndIf
    EndIf
  EndIf

  DataSection
  Start1989273772:
  Data.l 48696   ;Originallänge der Datei in Byte
  Data.b 1   ;Datei ist komprimiert
  File1989273772:   ; Packrate: 81.60%  OriginalSize: 48696  PackSize: 39738
  Data.l -1103609014, -604569600, -83578215, 1645486335, 614071300, 74230325, 1207900170, 1126367250, 310631203, -1758852989, -1840934014, -928776048, 747757904, 1244083364, 495798476, -1071575241, 546457571, -446424027, 403983268, -225226039, -1932506586, -226946295, 1899102499, -1503212298, -1274765749, 115460872, 881933065, -2043135804, 12470676, 18369707, 86564862, -2118087646, 1268524854, 54486084, 838216800, 1095367746, 350462732, 470974521, 606228520, -2054944042, 538317578, 1219243734, 345080160, -209907548, 648172096, 1377372178, 219359138, 1626508550, 1382394072, -396285044, 382173640, -1452010950, 1235059477, -2112913902, 1580305125, 1231308980, 1151736205, -1697787271, -1983097548, 1151510259, -192222585, -1487613528, -1426764502, 1791470293
  Data.l -643003699, 1303012530, -1159858549, -1949440140, -2067616009, -124982521, 630448560, 1926843947, 1731578469, -382436154, 1050911441, -647185811, 1572230058, -1176635749, 2085543793, -1882689352, -1168298213, 1471014130, 1987788455, 395302892, -210149857, -1621636635, -201655010, -545273883, -186942082, -468924441, -1553200935, 1382916864, 675363652, 11690128, -787424415, 1913515536, -731871123, -1941040480, 573175323, -1581955964, -1905835411, 1162922060, -1323019528, 1690298550, 1188731512, 1596987099, -1154062631, -1327018571, 833997517, 1722312844, -922909393, -1927935793, -1064566958, 1586954772, -1697650018, -1273254007, -749310603, -1562046814, -1175008403, -286478952, 884506185, 1105977509, -472206257, -1124126952, -54280878, 1072874479, -1038102741, 1526806042
  Data.l -29864873, 518655960, 329678828, 648756822, -949615537, 905044943, 1526178277, -815515034, 881297658, -1891069010, -824334483, 1710109424, -1738910855, 858090605, 2010625830, -805521303, -871894720, -325750017, -1495681153, -469989617, -1618332544, -1023592999, 1533873071, -71746285, -1741693291, 635588896, -266396353, -1573215495, 612837735, 2011126657, -314611467, -99148089, 1752206431, -1672680, 95643293, 1509906107, 263584503, -113265505, 248749782, -445170185, -299880985, -2050525457, -1677004453, -1944307357, 181978749, -2082626570, -1542242126, -111835264, 1575266175, 2043767421, -1142057225, -1884301337, -463675738, 2010769115, 1823636412, 339980512, -1043418613, 1405065608, 1554464634, -1164468804, 888974221, 391280766, -281398117, 651812306
  Data.l 1648687860, 1854919888, -1682033757, 1594219759, 567496491, 36035452, -240965219, -280986169, 349830984, 1231690302, -1458259958, -5493414, -446725901, -1172420933, -1134158468, 1055205749, -376394597, 820780883, -486214234, -1151672925, -1144267687, 1253465884, 1286572978, -100674418, -1061680339, -58302219, 64341615, -1516819029, 804311273, 2116145219, 1274326862, 1571761598, -303762403, 1220310359, 1579525138, 1106405630, 129118110, -1872939398, -1082585855, -975281227, 436751482, -646022619, -2120256001, 87070721, -1673700, 1878742685, 868897988, 1602831347, 758669191, -1970030209, 484777623, 472413479, -1888561035, -260483729, -2023631935, 1382878278, -553203527, 723489247, -49029253, 1853408847, -1076577016, -872139961, -801854185, -1069341736
  Data.l -1263947670, -1182663909, -477674991, -1169218161, 979915192, 1787559825, 1470109810, -1846202371, -538062504, 1693019031, 1559641756, 732355482, 633339715, -1411660559, -370877300, 127827086, -1209475556, -380683883, -1008763595, -1278491865, -1850555331, -249966930, 1456202985, -630006497, -888286031, 374031567, -507389396, -319297854, 1609352000, -1559357327, -976249496, -1193245465, -1418854974, 162486692, -814085959, -548741922, 799922134, -606226787, -890163996, 1567493077, -924288933, 1996377985, -1995067627, 1579891152, 1069322160, 1049416249, 178816972, -1313144165, 156371071, -805548682, 75962331, -1074356603, -1269994, 396045011, -2019652758, -122056644, 1461642332, -1922170956, -1596521068, -704667129, -1331142664, -2136567411, 1585617869, -1271163713
  Data.l -817699710, -550632029, -1969476134, -1029054607, 295345866, -2096877117, 611904803, 1386319682, 206490278, -942995689, -3493121, -572523075, -1153739525, 2127794431, -131645474, 2138043295, 277577579, 1804466523, -365048486, -581069956, 770789281, -589385807, -1821575947, -321690041, -1876446644, -448955270, -587813009, 611056097, -984309944, -717949569, 486387568, 1221214939, -1176753393, 296805550, -1186417378, -1437652687, 1962599827, 1603028631, -1083650528, -1234829390, 795672439, 1285896607, -949512321, 230160892, 326745067, -568375774, -637570728, 164927798, 531053428, -764532137, 228980141, 1885250839, 1808651263, 1890298694, 1296292226, -1940472039, -1418348664, 2126013083, -27048077, 68611451, -551617766, -30397493, 1322774865, -741613642
  Data.l 2072552116, 1439226420, -230779089, -2101883400, -72131929, 1349164187, 1134757554, -974965723, -1562606229, -893687971, 1329249022, 105859465, -2133205013, -1956342414, -1898169453, 1900704537, -1962776543, -1611100908, -1474878377, -1937250817, -186945798, 313872127, -1174321475, -169448993, 2096441699, -153899371, -644122741, 625921908, 935025747, -1773811593, -949261601, 1179535050, -740355411, -712681571, 384018941, -89404019, -721717511, -1512219826, 2042044330, 849273237, -579281041, -280601798, -446980836, -1292220155, -1352635108, -1567772810, -408727222, -956308323, -875291667, 975020876, 1790095163, 956554987, -1934734688, -1914555444, -500080360, 410069012, 363370809, 403773495, -178108684, 1032710375, 896959273, 1399783352, 1668521791, -228026647
  Data.l -2145722561, 658996493, -397090942, 1537174933, -1632165836, 2142882801, 501939047, 862280894, -1391338580, 1324567014, 1883172557, -1756787310, -1247514011, 1809409583, -1749165956, 429570990, 998858535, 329868598, 942847839, 60536545, 817499870, 1548259889, 209078969, -696285298, -1916834008, -1044421899, 2051628905, -989078862, -1493420698, -757359023, -1349203052, 334337331, 1463967271, 1993409658, 72899359, -1612815707, 1259278909, -917503322, 1159439115, -1596518400, 1351136599, -1743709299, 1632874594, 1787746682, 155612368, -604042995, 1458720819, 494104759, -870794898, 1826439108, 245077187, -155505924, -1945757207, -1295780146, 2121064377, -1786696100, -1120111083, -510148289, -470055697, 1513610063, 1916426308, 873375998, -504244849, 687139712
  Data.l 1425915250, -848497101, 1388312819, 2117696047, -1611188056, -654829569, -377798818, 1587421670, 1019739916, -211853669, -639763603, 668962710, 208087527, -373827079, 969949117, -748439649, 1450132226, -1848881193, 1304400942, 207893986, -1429812398, -692535843, 322539259, 2011418787, -409895117, 748499861, -370831519, -539399327, -161706003, -145926487, -120165301, 335394797, 1491545647, -426813814, -1805813413, 1408660439, 367583672, -622600721, -1285928071, 2008343221, -1185009973, -1798389391, 726478517, -622976831, 407861805, 691791653, -402903213, 1340328922, -1019748930, 1606119119, -358916484, -1570724018, -1917413473, -1561445612, -1856119195, -1639519245, 633931648, -1964992112, -1956649605, -1879267337, -1096199593, -1111004811, -313265040, -1619110038
  Data.l 2094823677, 2128511973, 1407311269, -262869814, 40091841, 1832352022, -958468202, 1971843487, -1094670257, 1836180061, -1157943190, 1651222117, 480930629, 903465416, 94884924, -1664577638, -141247727, 1342027684, -827917745, 1304377077, -1931953939, 1935591181, 673462203, -728226887, -565497301, 492716514, -1883358893, 779386850, -2132304728, 35536107, 531922730, -1449767983, -544921002, 511277155, -1087629526, 2097181088, -1107818652, -663412348, 1475605503, 1375005246, 109797375, 856756475, -1954711169, -2101348381, 1338779454, -910459095, -1431930082, 945025698, 1073576966, 254533519, -2119923923, 2079325399, -1766944853, -1318141393, 1950131330, 775544407, -668165929, -1371094852, -18465221, -824959210, 2141410832, -725832467, 1500181910, 300768298
  Data.l 1054816074, -1233539470, -446268491, 1552577252, -2107622504, -1727120991, 1394551089, 263505125, -436061336, 1706257809, -1260553659, -931248319, 2045099867, -587220041, 678325744, -1329349450, 157626820, -505809990, 1197638177, 1318569650, 657903837, 1238553520, -1102608934, 1615412243, -277493584, 778448626, 1175240847, -2002236736, 838272017, 591632508, -1187527223, 283430742, -307629392, 263224623, -1478432958, -68048681, -1549842168, -1080636418, -1885125953, -137428999, -1561946991, 2079949447, -228020738, 92946465, -1852574985, -842008384, -1974487702, 989648799, 2026447678, -580834381, 399677161, -1335855909, 2073343896, 1152675387, -955478491, 511463523, -1226161675, -1978567648, 535012165, -562822901, -1481097392, -316217722, -1230826922, 1915350891
  Data.l 2037475238, -1556840850, -926512310, -2137678331, -56997979, 2146236335, 449650503, -24933736, -1497293388, 794582350, 2060974261, -403842124, -1146488165, -897915738, -957987001, 866037062, -1166864515, 2109176204, 1465904829, -359318997, -1074251979, 2133409196, -969430345, 1878441572, 375945470, 1864268883, 2075686847, -964579086, -98056089, -1228465736, -696427426, -1170422375, -1445233228, -1338061123, -644811155, -497801313, 465671268, -532714802, -28425856, 200028290, -451299553, 2073373646, 1220452079, -1716682863, -1615266089, 367285478, 626691379, 111772377, -626877330, 1694437323, -495708901, 1527517556, 1521448371, -1149439195, -853129049, -294736880, 1500995957, 1489036405, -995221795, 775319112, -629862370, -1419940012, -2068220483, -1692852447
  Data.l -1915198300, -1311709878, 101286851, 1355561295, 1831207555, 2016113712, 1038188450, -1457955402, -539126814, 1785057109, -1664412182, 891313531, 571882875, -1347173897, -91440234, -617881683, 1482083642, -380842425, -1171094194, 1253326395, 1595263745, 928283632, -12078762, 840838003, -2517965, -1664582564, -1907283057, 1701762711, 1677840639, -182802104, -824953892, -1997892305, -1082348917, 1873171879, 1827298546, -648564910, 1994338576, -163820588, 1142064829, 709523294, -1697133751, -540982786, 988404520, -1007035235, 779778104, -1739642176, 87985714, 1174372100, 1920766815, -660737743, -748239512, -1827906346, 1909650789, -377561637, 711588546, -885684049, -926247207, -263695952, 340248876, -1025448465, 767849175, -397074430, 528460213, 2027546622
  Data.l 1527834141, -982122568, 1475888372, 558081134, -349530630, 1924790465, 2050442641, -290243970, -1856208935, 1232893721, 2037593267, -406330032, -203002932, -678451671, 1670306302, -1989675229, -554765418, -537467145, 524146541, 1869053815, 1727935779, -954341809, -193038097, 454114027, 669166537, -43583348, 664128863, -1347553281, -130216227, 233979008, -1744961654, -1405657702, 1603908511, 1522362045, -1453566597, -480458761, 1768279703, 1969975929, 1610543041, -182026577, 231422847, 2125077947, -736792570, -478727717, 1238882596, 180289330, -783630342, 319330853, 424256241, -2037674178, -448599338, 2096639149, -1311944558, 1953068543, 1024829458, 2113038927, -997937282, 2077244826, 1944486661, -647175348, -1390200680, -467147070, -690567676, 164424163
  Data.l -1113312168, 978046917, 992411426, -90847734, -592451351, 1452991095, -1265713357, 1160048174, 697859682, 2121123929, 1919147292, 379914720, 992861151, 1669089139, 741849667, -343278151, 1916438449, 268073829, -216447318, -566518948, -184632859, 667319211, -455370049, -1680489128, -690789282, 1038022619, -1018569746, -1116146217, -796003247, 582532750, -1850801379, 1047061547, 330084055, 157132271, 759693769, -591041097, -354485731, 1595503768, -1853404224, 1022919203, 198015096, 1727604546, 1056025073, -1842934967, 2025213141, -607275027, -438608990, 842849499, 193963721, 1914793301, 225583262, -2045234274, 2059036055, -1829902228, -1802766289, 1719360047, 1966296554, -1068338807, -867835443, 150824990, -1126952772, -79942683, 763091829, -1973239973
  Data.l -1088581940, -351538318, 1725683541, -291107777, 479685874, -154869986, -577482400, 1961145885, -1083213943, 89377460, 1802794223, -613420713, -811156010, 2036513591, -719163859, -2041815314, 986133849, 1820371090, 1173131947, 499567212, 732199000, 1888377776, -119578941, 1578942015, 189775478, 1996128247, 157876067, 86768387, -306598553, -1592334854, 1027727044, 1201007534, 1366840291, 822494060, -1387046998, 940665154, 946726876, -1286599719, 1137693482, 1733911549, 1366117124, -411336707, -1688767480, -1956036804, -1293835969, 1769470908, -450143763, 87784906, -2122612011, 181354290, 1038888725, -1787672957, 83313588, -1938298300, 1674558415, 1966799475, 1921627101, -429343009, -733232687, -1337541923, -1837295304, -2085723212, 49499254, 1504402787
  Data.l -581902653, -1571147042, -1855062821, -256132140, -1818505892, -115306531, 109714633, -1527170850, -1177085472, -1988594797, 73918141, -1173048986, 1223366654, -52401483, -208423333, 926786369, -601522202, 1203185681, 1539014645, -1276979803, -518717661, 196593662, -2138745034, -1091709243, 1313753776, 1028377023, 1798771055, 2076415442, 1850375206, -92789839, 1475628580, -540983349, -1443093675, -1127718599, 1028609627, -1853492761, -40399761, -1769739562, 2106486724, 447481030, -2142243851, -1515606529, -1790453956, -1454831318, -337033011, 1975333119, -583655804, -1914503572, 1889983103, 1556921432, 1372332981, -1195475239, 734229300, 2033734874, -1155168642, -970453275, -592024633, -1345274328, -1650044933, -838866954, 2120186831, -1351650765, -408972904, 2045845115
  Data.l -1626104370, 200588255, 296300345, 292548395, -1107678377, -295872629, -1308362542, 1232223766, 83558136, -51258164, -1702905536, 265600404, -957672467, 691928630, -849642248, -1292800604, -1456328943, 680948836, 1040529927, 1377880220, -1808123991, -1918633495, 1817694315, -1481313977, -157550483, -1111332059, 792031151, 1207548713, 1222921938, -1824732222, -957635339, 345361404, -1654889825, 2034851755, -291680837, -1439332382, 1997134215, -900967507, 767073721, 314433328, 2130926906, 1897027198, -527451931, 1372801262, -1283671081, -1386782609, -1947455011, -2108416553, 1856580573, -449999155, -417297875, -17861899, -212116196, -1403096761, 1370450876, -769888467, 1976793779, -1309860505, -1162685549, -474150554, 1809976781, -277919322, -943099537, -996842070
  Data.l 1750620948, 1743637960, -500814332, 391338739, -160778359, -277583457, -739476043, 992649935, -847688649, -472442969, -1757030417, -763876084, -800269603, 1760419442, -588983835, -1413989675, 1520659405, 2099767628, -1538010628, 2024189729, 1720744922, -1032796551, 248143306, -958213393, 241346979, -696735433, -111307002, 642382261, -2337047, -1101641866, 1447308755, -1142531194, -570482778, 1978600472, -361510255, 1518468846, -46737265, 1283958591, -151584114, -1792823425, 520339586, -1479601204, -590004238, 341190314, 352288763, 1025126844, 1837091999, 1525962545, -1291650283, 448739818, -141149636, 283232929, 1372566904, 1294792702, 1256951196, 178285967, -784251779, 38264808, 355362835, 67802937, -537165963, 72320978, -1797311137, -103725202
  Data.l 463466048, -904609803, 601560081, -1244217349, -1625625886, 613005357, -571786804, -1941199639, -1422499008, 1288518397, 1751375697, -232117868, -2062768334, -1141736433, -361451445, -962818999, -1140259317, 1837855541, 1769262235, -1259540249, 368504463, 1494586339, 1635275619, 625122825, -1493719805, 1000575205, -266130092, 434551236, -1133661, 377997112, -395955576, -110741788, 628419663, -1691887746, 1475432100, -992295793, -1376626853, 1039390049, -562574092, 1139276590, -1912107276, -1656155637, -29294501, 1042693463, 1632436187, -1227817661, -42237367, 863584958, 1144247803, -154430745, 1875217209, 1321645180, 287088447, -934611484, -1921667902, 1576411519, -1963904908, -415634577, 1443330040, -1669620470, -632830062, -1950471371, -207805887, -377666520
  Data.l -1716761411, 318056915, 1356705439, 787011003, 1594632494, 1247061715, -1959396405, -879920236, 1485350753, 1136916601, -682432871, 523947518, -508245801, -1250039133, 995781929, -1278283395, -91064369, 647988937, 1737614844, 1538502557, -816605299, -1838386724, -275453181, -1431208624, 1888005883, -952414168, -418372165, -1146764463, -633372882, -1258323842, -338753738, -325004173, 863239676, 1759013320, 1734320884, -369636995, -585896201, -2072986737, 781494237, 908845791, -960577394, 1831420037, 1364189021, -856136185, 1304147153, -1814209672, -1906530874, -1432343308, -181913703, 167139488, 1834225046, -1688080817, -30167249, -183585829, -1143620994, 1602212612, 1222699861, -593794483, -418488722, -264682402, 124956096, 1776151716, -1159889065, 1114005368
  Data.l -302256197, -484844739, -1684982056, 1403738325, 117643424, -621732260, -1819088098, -1863483517, -649420309, -751112193, 1836531018, -486159511, -944145083, -1050021450, 221503290, -521296246, 1430006189, 1932619961, 1382320647, -1211387413, 1924501724, 255972671, -13439164, 1790767251, -1055752968, 1448890485, 1959955245, -639394559, -970235656, -501777491, -111231521, 980916852, -414901986, 462616780, -1305927540, -503860480, -381690766, 899558175, 1478774751, 1203488013, -1462167875, 1819269998, 483586588, -1238788449, 434164448, 565744707, 2094398184, 2112464670, -1279894355, -400730578, -321525386, 297999847, -587012259, 1459645541, 1987681099, -473487820, -136786346, -979717644, -686329258, 396675789, -1829061207, -1955898886, 890908427, -1954308653
  Data.l 1228679237, -706845022, 1995297323, 880158977, 780882305, -831128233, 1562828867, 777289003, 1006572951, -481915044, 469707189, -1112791919, -1593727429, -492344643, 207561651, -302645559, 1019674001, -1621666708, -724157894, -835356089, -1663397190, -783575538, 1282838500, 1770075635, -1752617407, -1525955787, -434316030, 736331895, -139260643, -1667793454, 432501069, -1354254254, 165582437, -846333795, 373925461, 494135974, -521001910, -696596903, -704959066, 1402624671, -1722622090, -497780765, -1635795755, 1484209972, -1004655626, -1669720274, -913882770, 213429599, 1417158367, -1994231581, -1408458296, -737759142, -1342404327, -1946189543, -164023691, -335593604, -1108180275, -825240710, -125490206, -86197420, -1290803411, -772277018, 2127912855, 1001502688
  Data.l -466633841, 1545572073, 1844056962, 410886, -438629556, 489059727, 27746318, -1023583319, 1071324079, -538815059, -300536891, -1226116931, 1518012353, 1428748385, -490113781, -1433325810, 1798113484, -788906851, 517684789, -339182873, 839937458, -209063725, -645272515, 1556255396, -1993323422, -1817578931, 1575824425, -984065365, -474878537, -493438362, 1854995054, -1264605343, -953030993, -1439689578, -1154968095, -461292793, 1433233929, 1409110951, 1996174951, -1279926797, 1098419263, 1869514207, -680805605, 652011421, 1647472679, 723853015, 1501058569, -329569600, -1596424659, 1277801226, -1626376804, 531861078, -125046870, 1715161912, 1430247000, -630220501, 1589440844, 1170079551, 381550561, -476791015, -1391524215, -1168481963, -305313252, 1565596154
  Data.l 1117194277, -2051655459, -1392981951, -1410541548, 317569459, 1521384379, -1616668030, -1743466241, 2092593032, -499533716, 2015438876, 769593042, -404580056, -878433539, 2126171140, 103489438, 1221250935, 1264971521, -1218532958, 593421679, -1905688590, 1175716815, 1857156165, 2126280910, -2121469702, -35800219, -396034525, -1164593468, -589766222, 526930449, 331893873, 1878779458, -1967808547, -1383226467, 1947755439, 398455092, 2027916663, -724706833, -1048220227, -587224271, 2073983752, -531989166, -1879231430, 1652232454, -687884296, 1121937918, -149507305, 1660509935, -648215401, 1808395057, -152060110, 1871437766, -973089329, 245658495, -342121285, -88737235, -865986579, -1680592321, 1334732777, -477809636, -205161797, -167555410, -77450614, -1166756742
  Data.l -223238449, 1535749622, 449521060, -1783670682, -463751237, -362560649, -252961260, 337566422, 1374426700, 511860394, 1585202921, -602523556, 27605759, 722646242, 1408881789, -597549609, 213607351, -1839425734, 1538018729, -1061051114, -1860248915, -1627241504, 1738486954, -184631310, -2103112001, -31279805, 1872417976, -899615700, -102376518, -676745475, -158675243, 1195919676, 715456378, 673491792, 2024049496, -352624516, -1644689513, 1728966334, 2077841367, 1756224233, -1677989023, 1311731575, 893900374, -850445975, -1203975369, -409849295, 527677975, -686588681, -76695986, -1244430993, -148541020, 1307451183, -1122766345, -372327189, -1670041107, 77297982, 1572780703, 969987518, 1687741718, -847862431, -763763952, 423465664, -377795979, 1140635903
  Data.l 370843977, 595210041, 703044284, -661325044, -128212473, 772237884, 1229091247, -232482738, 954517080, 1425911826, -1055732959, -1311121257, -1900544639, -766413601, 2129115364, 1278735498, -1856333637, -1170314927, -221994438, 957610735, 1275787627, -136718967, 1034128700, -13667952, -462967761, -555123586, -1107855970, -1548550863, 869099081, 1307728299, -213951002, 1785850343, -533829297, -1529451383, -772875829, -1659962087, -1969082157, -657963447, -700267599, 665736904, 917865245, 1051572054, -1262823239, 1156234969, -1239780036, -1401309606, 574327178, 1729710805, 348822452, -717429872, -1547908745, 759006627, 1540331754, 1835903717, 486956508, -2053915399, -1415920892, 993502843, 1113965374, 1612736732, 1610121111, -1784710531, -150295739, -917105281
  Data.l 535746459, -1054283021, -642828940, 2140042086, -514400557, 699559287, -209730326, 481721412, 1534858485, 1138652472, -304628649, 1111342962, 2027976943, 969699488, 1806394478, 994022407, 179549636, -705654825, 2129145082, 122412410, -1602442837, 956587366, 248293307, 165884332, 395125755, 1840925742, 2111463003, 1785318139, 2007719285, 1179547273, -769098318, -432594979, -1940285671, -25834167, 550774101, 1884062247, 2011775659, -1214667405, -1886401581, -1016975657, -846258543, -228469809, 201172973, -628448872, 1413017173, 1638163425, 605941682, 863344880, 1169562941, -943278606, -1193617431, 41564105, 455419382, 1199144671, -782384479, 1296064211, -167735397, 1640144070, -461692763, -1076960565, -1713423251, 310816615, 699634950, -1996665063
  Data.l 1522934143, -1683391366, -1313030529, -478195162, -1117955045, 1131726439, -1038879980, -890496308, 1427988621, 129271402, -1300986097, 783544422, -318853650, 1325628346, -75744260, -1686014643, 930589590, -457532258, 1296205539, -1455409826, 618182323, 695636968, 1275005407, -1317897657, 745169455, 1023058856, -52655372, 1205265085, -695549955, -1661513758, 389404208, 2057205351, -1349792544, 653772989, 2119984675, 91374627, 562365555, -2009227815, 1937090128, 1451222667, -174778389, -1183913671, 869465081, -915229401, -19412255, -292750347, -298118284, -893406275, 808106686, -1156024631, 2038983908, -4405893, -691539384, -76910684, -1854669176, 2136108708, -1297923149, -137580401, -19017672, -654368457, -1859442504, 1097757363, 1072003528, -1343770633
  Data.l -1616905065, 568080374, -87042024, 1677457820, 1542789941, -340793627, -63841855, 374948277, -63561743, -172074828, 800191900, 1930569578, 1380440036, 1910799479, -1215502660, -369839590, -2140931054, 2074865960, -60104988, 1465005788, -1093427223, -1470240325, 1859250392, -1684345103, -1779180954, -243732773, 1176474704, 1941768269, -1379016992, -654845896, 1592349822, 1447025531, -1118309994, -1378721910, -1896596010, 117043061, 2033100635, -2096446158, -585710169, -401628566, -399946175, 1025917164, 399192725, -1434795021, 2085315775, -1367702405, 798332342, 772847363, -1839744424, 1634658501, -734567005, -1216774289, 1810685913, 1272540597, 1869675516, -1390191122, -1997858594, -1154673822, -1716063375, -1868690547, -977649479, -2022763837, -426147202, -2102556077
  Data.l 1752382932, -1103391072, -1479043041, -1340759802, 1372620999, 71829542, -980568634, -398479809, -1688490628, -1048834129, -138647630, 904199555, -158052725, 1787159038, -536319177, 758202029, 1975502870, -889430643, 1534496722, 2005476827, 888888303, -306776197, -1179489230, 109308243, 1618165287, -469301038, -2056334472, -1158116295, 896427386, -1713382074, 1808018468, -1130584506, -950828682, -432736026, 1433818559, -238857970, -543398646, 1013626642, -490400163, -1183247653, -2008034463, -445016718, -763855537, -1301338568, -120656964, -1183250532, -1447628676, -150682134, -1142034617, 1470740468, 1786026950, -555478626, -1993540755, -177758694, 1608898244, 1085502228, 1400743713, -276863694, -153680670, 719056245, -821449282, -126950450, 879743084, -1762519690
  Data.l 743824334, 750332702, 1549994631, 1973054348, -1634651991, -1076162753, -1917469754, 1828426616, -1646382283, -1768891269, 261687679, -1556351322, 2139067729, -609014852, 255246506, -1968892998, -1805651349, -40715783, 1265557892, -1638685380, -285280531, -277563183, 1248992092, -1300699461, 852721063, 1003857597, 1953311790, 78657465, 121544173, -1554077302, -829541938, 989605880, 1423561661, -189572254, -1940642757, -943341109, -595281644, -1819168159, 1149114869, 497546531, -993406817, 2074368997, -963988912, 1337895781, -1661070199, -1553789896, -286024238, -349456267, -962953283, 1894310305, 43347140, 379777433, -1541733959, -1456453374, 1305261643, 1370402053, 2011977074, 828030904, -1024834214, -1389151274, 1524052453, -751363844, 1311450605, -1060391399
  Data.l 1274519410, 964851157, 2133626417, -1653114590, 1675453511, -1952473096, -1080339778, 148004015, 1525258109, 1349878503, 497424286, -605201187, 1807122283, 586330590, -995761991, 1220581676, -1199397171, -730084574, -152618005, 646654799, -861891110, -56351357, -39098525, -405935893, 1791315930, 1537732955, 1018947261, -209931389, -1790810013, -338655686, 774756081, -1234333879, 608951639, 781163088, -1808950702, -2043815010, -4648040, -673246840, -1228521810, 1304892852, 1723973493, -725859735, 2070049467, 1780894810, 996452721, 1921737235, 389880544, -913738378, 1965877924, 1455144864, -281749955, 2107694056, -12710439, -1697260808, -1700057204, 1263006263, 243888667, 1542284269, -1657125524, 1974472038, 1341622366, -605103715, -824805427, 663433470
  Data.l -153217156, 1991750006, 1841396189, 322700089, -1404375690, -2015947742, 1727375943, 1528027751, 936484751, 1270050773, 1551341544, -1788790833, -667571925, 1186512502, -73596223, -511552967, -2597249, 1013955663, -1451468180, -411361107, 1759602325, 779768679, 1243604783, 1971429318, 982323445, 363467701, -40806853, 792210935, -2023508791, -500572427, 2033444345, -1243967357, -793882119, 2046747523, 364823291, -451103784, -504618632, 2127360283, 1307310971, 1989903119, 2033338795, -858392794, -181426275, 395258235, 1310755910, 256560582, -441814200, -1234789669, 516206074, -1176721007, -759457877, -2072897106, -1856201586, -407024586, -250246110, 169723086, -211617434, -144711518, -387844801, 456042245, 1491204409, 1917475773, -555754591, 2006029522
  Data.l -2107382581, 520432456, -1161616816, -689993771, -1089674707, -474257106, -622471598, -53597346, -2121696581, 338236951, 1030221109, 555208090, -1699355192, 299035169, -1067092069, -381822129, -472262337, -1101357614, -1421887535, -966247756, 1150447818, -1817634181, 1564875235, -1407866264, -1098954403, 2057025343, 1067247185, -609878195, -1010087982, -1431848386, -447186463, 1163108058, -545962169, -397311131, -1142341978, -550023506, 1145633014, 192355624, 957912466, 642890985, 1487784837, -982109725, -1649752627, -941910536, 2084418958, 1770680050, -576864565, 1253992422, 1301550435, 1620794768, 1357418251, -1451179143, 1565083567, -738346371, 155049788, -1375750724, -677309026, -274604059, -1407050027, -2082120337, -621426191, -1733034954, -1152845835, 31358140
  Data.l 1970395847, -1638320305, -341907695, -362861544, -100712308, -1244001326, -522481138, -1373196877, -1681099363, 1928151997, 1670468407, 1825998518, -1769627190, 251997794, -817893209, 2058404288, 935713109, -620329791, -56675362, -1225861317, -1119298322, -1160325678, -2103977384, 1840994790, 1547133877, 1059819981, -1304067666, 2019405158, 2085764467, 1735051093, 1305887967, 1459950126, 698821726, 1688088376, 1181062086, -356434201, -31696341, -704457421, -1149458035, -649729167, -840471236, -1937336924, 1617444665, -978630897, -168750805, 245749234, -1918784677, 1962719225, -1425520795, -1990764634, 1652110756, -819115532, -2084318567, -719570201, -549556000, 1725561951, -72449030, -1009576969, -38303049, 487757310, -890937560, -373970991, 1216686046, 1865921117
  Data.l 748557290, -1008306470, 712415215, 744207037, -927718617, 124202168, -1782288022, 1630695908, -160724017, 1525697197, -1612173894, -1311847871, 1956367735, 991159380, 1193434205, 506694386, -162899140, -973536911, 1378754331, -733048580, -33573633, 959540175, 176577700, 1716669439, 1215674850, -1459620447, -347137579, -423835356, 706936196, -1795168945, -1998595921, 2028739359, -1243076294, -1769152873, -403833922, -510070965, 373394394, -1899570849, -1436326486, -1765277492, -998316141, 667042299, -1124536693, 1598913981, -36982800, -997266533, 403371573, 555317182, -1161558141, -1105413645, 1407739422, 1323842207, -1968357503, -619003762, 640401733, -1864773377, 2106359450, -771499139, 194980855, -339743651, -1818302257, 1835857567, -855899577, -75561987
  Data.l -34545859, -1074632758, 1864122299, 1560280827, 935983075, -102799756, 2054211419, -1445726676, -893930777, -320352642, -1298932763, -336315285, 721004419, 1474271990, -551305276, 202518262, -1300959123, -1919537825, 1670734971, -27702347, 1565194152, -1250220613, -1543645211, 1952622901, -589012762, 1239621117, -18051231, 1239806321, -9680412, -218268620, -102760461, -70463625, -562184738, -616384742, 666910012, 362453700, -1854561715, -1982509057, -473084605, -322555119, 1759474877, -82987317, -2027862174, -179114229, 746038431, 1250226367, -1774373065, 1031399020, -824589106, -1185012820, 428235712, 1527522812, -1885736366, 900617853, -1145636047, -31517630, -1192178922, -1620324630, -520340092, -1237555714, -1287899521, -137519649, -1298559594, -1695287009
  Data.l -319980705, -812738067, -1401162274, 1028602739, -1013058156, -1175592049, -1178964613, -882025449, 1582613476, -1915076779, -1044828495, 1930359352, 1466724300, -1419585221, -1233844689, 1718327623, -567317484, 1200312199, -1679073815, 681535815, -623255226, -794547346, -301840925, -1929062098, 1813000266, 1009906169, 2087880382, 1072971652, 1596702610, -419597322, -830806018, -134834933, -562250378, -1695157858, -2069403693, 228543179, 275815084, -302395928, -7230721, 25508565, -87076874, 1853812575, -189794482, 1843421150, -1742757592, 2094908734, -841042149, -1272751698, -1131548133, -421168868, 1349127182, 792933312, 1912329563, -1569242014, 1306377896, 2129060383, 2124082961, -975640021, 2000273163, -1353196677, -478777699, -1335140169, 365565795, -1025735418
  Data.l 1558652349, 988327775, -1110679747, 1667875190, -1468877090, 1803668468, -2019053783, 1143590533, -84795235, 381880137, 1799296348, 1994373242, 1511381982, 230783107, -287505604, -176772754, 929199066, -2117201026, 1529444187, 822551576, -1160238460, -414465001, -978100682, -1077749067, -291417009, -26063766, -1181877842, -1864614894, 955823943, -1653583425, 1456196707, 2026061119, 609080169, -2049523825, -1948904642, 1679458586, -2031961142, -491352563, 1905085285, 2001989155, 1991464378, -1418216000, 1882225028, -963737362, -697451368, -1619020842, -1651105357, -1108814291, 1306055908, -641540698, -1388240092, 1040661176, 2137857838, 468309724, 1863837242, -563991189, -54581957, -2037108227, -623036573, -916685391, 1700001046, 1470216921, -137156084, -1622443940
  Data.l 1864171812, 2141813337, -735101074, -1797676087, 1865853718, -1449691242, 315469280, -1030845794, -692337743, 2067062651, -61827353, -1289509159, -685479721, 2008731092, -2114897682, -1320785623, -1896052519, -1797708647, 1367976627, 1697564129, 657099815, 1163250016, -445394562, 2095217283, -1915800248, 940630009, -753063378, 1433308671, -1847992618, 740474969, 614789462, 1187518640, -1123058819, -1654533065, -1292458378, -1419928833, -151757892, -1131167495, -370894648, 1875035726, 1547894621, 1602160709, -42739030, 313385119, 1637732949, -1278782514, -708663013, 1358469746, -1786936417, -1178173579, 1743828546, -2021549353, -995714651, -1419715141, 881848446, -785768532, -1434434642, -1612374408, 368291389, 1862260689, 2063040772, -251337528, 1569587045, 130405060
  Data.l -603453478, 1168327649, 1865931122, -1662738675, -2080867920, -899603304, -508900460, -37616463, -705474388, -71728355, -428507245, -1732380267, -87400743, -1687950360, -440539794, 393845609, 616001245, -1201900491, 535985020, -1334696934, -1342846606, 1505156605, 1871922417, -448464549, -1859969735, 101340496, -1302752979, 1778290043, 2108029589, -1148380439, -306785930, 931774204, 943087378, 1456715588, -685543804, 462185916, 1279761541, -1273496561, 2075840317, -1971859987, -1812723073, 1431276461, -1268778614, -478972699, -413813114, 373132874, -621172625, -836549667, -1470194466, 1041864070, -605603065, 1941294918, 1574857197, -496739459, 764796717, 1397226833, 1290957452, -776156461, 267424978, 932857686, -1510136443, 1658305505, -1912968211, -1647683015
  Data.l 2073345826, -476427177, -1956263045, 1903078540, -1273872434, -547876326, 1790769601, -153929628, 1466468774, 1978576529, 1974236620, -1589751722, -88110231, -933144235, -2062403936, -1310616643, -530873916, -1170266748, 1387187479, -860452629, -437407043, -1197187724, -913113231, -1272822131, -415765984, -481062321, -1733388522, 2147264016, -939647115, 2074956335, -1369514561, -859855852, 1726968822, 934916863, -174065217, -1494828582, -738479234, -1896353892, 1943192876, -487760221, 855316031, -1236614292, -847903442, -1107389523, -960295228, 1101097364, 95823608, -179464929, -1202552891, -62745397, 43441102, -2146944169, -1303432586, -404931809, 1893649276, -584507466, 798882509, -672436443, 664260153, -613068513, 635379529, 395596860, -1414058017, -1817372003
  Data.l 1824053869, 930248649, -875818388, 1286492978, 1240621138, 1510960669, 1203002414, 1660529786, -1397760788, -814636335, 1952739510, 1316965777, -1336223908, -863725797, -1931005834, -777204135, 629611722, -1041728614, -1422512666, -575672975, -839999661, 1421539982, -1777058306, -1591853768, -2069921428, -305906587, -113491995, 380591179, -2086866033, -1510288070, -151677963, -370016345, -1113274644, -181502819, -1681729124, -849376982, -409716231, -855232741, 74734766, -992590744, -1755447766, 455281109, 1793681333, 1936323969, -1951107221, 1998378743, 506591328, 1886107997, -863612528, -1596327603, -124664027, -1689011372, -356131516, -1841663193, -949499393, -146033064, 1215259605, 1520203000, 812128947, 1271492785, 1699043315, 1032750534, -87349539, -244667439
  Data.l 463498302, -1434665749, 1448732795, 2087894231, 1048041639, -2089173959, 39505248, 247669329, 1431325701, -153714334, -82533960, -516423815, -823096486, 1665366501, 1815499927, -945910111, -2084250182, 681893685, -356471341, 1985802109, -1174514452, 1273855430, -657075720, 1522264567, -1843823885, 1467166313, -1591747138, 548907004, -1432622529, -365175227, -1751268533, -564167907, 436004044, -255525823, 1386203727, 2071723729, 758163895, 318538337, 1085739996, -1519680261, -882065572, -1730212964, 166717342, 303009357, -2029107741, -407664734, 1916653283, -76109131, 2039157224, -1219979646, -1930486034, -1744028356, -421153892, -969200387, 381687791, 1966176606, 1653650610, 1058006905, 1567104188, -2020674308, 2073918087, 1869831623, 1852686196, -1789702580
  Data.l -1936113260, 320396371, -1924503508, -1241900772, -738864294, -877691914, 1551952509, 1927370537, 948481074, 1434457794, -1192309149, -1473233978, 1510290981, 650488227, -1435741096, -455463299, -1340149001, -1893178055, -891820773, -1952454428, 707130045, 1332259990, -1371617553, -1563961665, -283168941, 1783965267, -521875900, -150261271, -1408270357, 897013949, -907303069, 1372781425, -1143080160, -1260388997, -823150147, -56780071, 1845284076, -122225553, -1754342154, -281049278,
Working on - MP3D Engine -