2 Copyright (C) 2003-2010, The AROS Development Team.
6 #include <exec/types.h>
7 #include <exec/memory.h>
8 #include <libraries/mui.h>
11 #include <utility/tagitem.h>
12 #include <utility/hooks.h>
14 #include <proto/exec.h>
15 #include <proto/muimaster.h>
16 #include <proto/oop.h>
17 #include <proto/utility.h>
18 #include <proto/intuition.h>
21 #include <aros/debug.h>
29 #define APPNAME "PCITool"
30 #define VERSION "PCITool 0.6 (9.8.2010)"
31 #define IDB_SAVE 10001
32 #define IDB_SAVEALL 10002
33 const char version
[] = "$VER: " VERSION
"\n";
35 struct Library
*OOPBase
= NULL
;
36 struct Library
*MUIMasterBase
= NULL
;
37 struct UtilityBase
*UtilityBase
= NULL
;
38 struct PCIInfo SaveDeviceInfo
;
40 OOP_AttrBase __IHidd_PCIDev
;
41 OOP_AttrBase __IHidd_PCIDrv
;
42 OOP_AttrBase HiddAttrBase
;
48 if ((OOPBase
=OpenLibrary("oop.library", 0)) != NULL
)
50 __IHidd_PCIDev
= OOP_ObtainAttrBase(IID_Hidd_PCIDevice
);
51 __IHidd_PCIDrv
= OOP_ObtainAttrBase(IID_Hidd_PCIDriver
);
52 HiddAttrBase
= OOP_ObtainAttrBase(IID_Hidd
);
54 if ((MUIMasterBase
=OpenLibrary("muimaster.library", 0)) != NULL
)
56 if ((UtilityBase
=(struct UtilityBase
*)OpenLibrary("utility.library", 0)) != NULL
)
71 OOP_DisposeObject(pci
);
73 OOP_ReleaseAttrBase(IID_Hidd_PCIDevice
);
74 OOP_ReleaseAttrBase(IID_Hidd_PCIDriver
);
75 OOP_ReleaseAttrBase(IID_Hidd
);
78 CloseLibrary(OOPBase
);
80 if (UtilityBase
!= NULL
)
81 CloseLibrary((struct Library
*)UtilityBase
);
83 if (MUIMasterBase
!= NULL
)
84 CloseLibrary(MUIMasterBase
);
91 void cleanup(CONST_STRPTR message
)
93 Locale_Deinitialize();
97 ShowError(NULL
, NULL
, message
, TRUE
);
106 Object
*MakeLabel(STRPTR str
)
108 return (MUI_MakeObject(MUIO_Label
, str
, 0));
111 LONG
xget(Object
* obj
, ULONG attr
)
121 Object
*StrDriverName
, *StrDriverHWName
, *StrDriverDirect
;
123 Object
*StrDescription
, *VendorID
, *ProductID
, *RevisionID
;
124 Object
*VendorName
, *ProductName
, *SubsystemName
;
125 Object
*_Class
, *SubClass
, *Interface
, *IRQLine
;
126 Object
*ROMBase
, *ROMSize
;
129 Object
*SaveInfo
, *SaveAllInfo
;
131 struct Hook pci_hook
;
132 struct Hook display_hook
;
133 struct Hook select_hook
;
134 struct Hook save_hook
;
135 struct Hook saveall_hook
;
137 AROS_UFH3(void, pci_callback
,
138 AROS_UFHA(struct Hook
*, hook
, A0
),
139 AROS_UFHA(OOP_Object
*, obj
, A2
),
140 AROS_UFHA(APTR
, msg
, A1
))
144 DoMethod(DriverList
, MUIM_List_InsertSingle
, (IPTR
)obj
, MUIV_List_Insert_Bottom
);
149 AROS_UFH3(void, save_function
,
150 AROS_UFHA(struct Hook
*, hook
, A0
),
151 AROS_UFHA(Object
*, obj
, A2
),
152 AROS_UFHA(APTR
, msg
, A1
))
156 LONG active
= xget(DriverList
, MUIA_List_Active
);
157 if (active
!= MUIV_List_Active_Off
)
159 /*Saves the Info of the Displayed Device to RamDisk*/
160 SaveToDisk(&SaveDeviceInfo
);
165 PutStr("No active entry\n");
171 AROS_UFH3(void, saveall_function
,
172 AROS_UFHA(struct Hook
*, hook
, A0
),
173 AROS_UFHA(Object
*, obj
, A2
),
174 AROS_UFHA(APTR
, msg
, A1
))
180 /*Saves All PCITool Info to RamDisk*/
181 if (OpenPCIInfoFile())
183 entries
= XGET(DriverList
, MUIA_List_Entries
);
184 for(i
= 0 ; i
< entries
; i
++)
186 set(DriverList
, MUIA_List_Active
, i
);
187 WriteToPCIInfoFile(&SaveDeviceInfo
);
195 AROS_UFH3(void, display_function
,
196 AROS_UFHA(struct Hook
*, h
, A0
),
197 AROS_UFHA(char **, strings
, A2
),
198 AROS_UFHA(OOP_Object
*, obj
, A1
))
207 OOP_GetAttr(obj
, aHidd_PCIDevice_Bus
, (APTR
)&bus
);
208 OOP_GetAttr(obj
, aHidd_PCIDevice_Dev
, (APTR
)&dev
);
209 OOP_GetAttr(obj
, aHidd_PCIDevice_Sub
, (APTR
)&sub
);
211 snprintf(buf
, 19, "%02lx.%02lx.%01lx", bus
, dev
, sub
);
218 void memoryPrint(STRPTR buffer
, unsigned int bar
, unsigned int base
, unsigned int size
, unsigned int type
)
222 snprintf(buffer
, 59, "Bar%d: %s%s at 0x%04x (size 0x%x)", bar
,
223 (type
& ADDRF_PREFETCH
) ? "Prefetchable " :"",
224 (type
& ADDRF_IO
)?"I/O":"Memory",
229 snprintf(buffer
, 59, "Bar%d: %s%s at 0x%08x (size 0x%x)", bar
,
230 (type
& ADDRF_PREFETCH
) ? "Prefetchable " :"",
231 (type
& ADDRF_IO
)?"I/O":"Memory",
236 AROS_UFH3(void, select_function
,
237 AROS_UFHA(struct Hook
*, h
, A0
),
238 AROS_UFHA(Object
*, object
, A2
),
239 AROS_UFHA(APTR
, msg
, A1
))
244 OOP_Object
*obj
, *drv
;
245 STRPTR
class, subclass
, interface
, str
;
246 UWORD vendor
, product
, subvendor
, subdevice
;
248 active
= xget(object
, MUIA_List_Active
);
249 if (active
!= MUIV_List_Active_Off
)
251 IPTR val
, val2
, val3
;
254 static char ranges
[6][60];
255 DoMethod(object
, MUIM_List_GetEntry
, active
, (IPTR
)&obj
);
257 OOP_GetAttr(obj
, aHidd_PCIDevice_Driver
, (APTR
)&drv
);
258 OOP_GetAttr(drv
, aHidd_Name
, (APTR
)&str
);
259 set(StrDriverName
, MUIA_Text_Contents
, str
);
260 strcpy(SaveDeviceInfo
.Driver_name
, str
); //Save Debug Info
261 OOP_GetAttr(drv
, aHidd_HardwareName
, (APTR
)&str
);
262 set(StrDriverHWName
, MUIA_Text_Contents
, str
);
263 strcpy(SaveDeviceInfo
.Hardware_info
, str
); //Save Debug Info
264 OOP_GetAttr(drv
, aHidd_PCIDriver_DirectBus
, (APTR
)&val
);
265 set(StrDriverDirect
, MUIA_Text_Contents
, (IPTR
)((val
)?_(MSG_YES
):_(MSG_NO
)));
266 strcpy(SaveDeviceInfo
.Direct_bus
, (val
)?_(MSG_YES
):_(MSG_NO
)); //Save Debug Info
267 OOP_GetAttr(obj
, aHidd_PCIDevice_ClassDesc
, (APTR
)&class);
268 OOP_GetAttr(obj
, aHidd_PCIDevice_SubClassDesc
, (APTR
)&subclass
);
269 OOP_GetAttr(obj
, aHidd_PCIDevice_InterfaceDesc
, (APTR
)&interface
);
270 snprintf(buf
, 79, "%s %s %s", class, subclass
, interface
);
271 set(StrDescription
, MUIA_Text_Contents
, buf
);
272 strcpy(SaveDeviceInfo
.Description
, buf
); //Save Debug Info
273 OOP_GetAttr(obj
, aHidd_PCIDevice_VendorID
, (APTR
)&val
);
274 snprintf(buf
, 79, "0x%04lx", val
);
275 set(VendorID
, MUIA_Text_Contents
, buf
);
276 strcpy(SaveDeviceInfo
.VendorID
, buf
);
277 set(VendorName
, MUIA_Text_Contents
, pciids_GetVendorName(val
, buf
, 79));
279 strcpy(SaveDeviceInfo
.Vendor_name
, pciids_GetVendorName(val
, buf
, 79)); //Save Debug Info
280 OOP_GetAttr(obj
, aHidd_PCIDevice_ProductID
, (APTR
)&val
);
281 snprintf(buf
, 79, "0x%04lx", val
);
282 set(ProductID
, MUIA_Text_Contents
, buf
);
283 strcpy(SaveDeviceInfo
.ProductID
, buf
); //Save Debug Info
284 set(ProductName
, MUIA_Text_Contents
, pciids_GetDeviceName(vendor
, val
, buf
, 79));
286 strcpy(SaveDeviceInfo
.Product_name
, pciids_GetDeviceName(vendor
, val
, buf
, 79));
288 OOP_GetAttr(obj
, aHidd_PCIDevice_SubsystemVendorID
, (APTR
)&val
);
290 OOP_GetAttr(obj
, aHidd_PCIDevice_SubsystemID
, (APTR
)&val
);
292 set(SubsystemName
, MUIA_Text_Contents
,
293 pciids_GetSubDeviceName(vendor
, product
, subvendor
, subdevice
, buf
, 79));
294 strcpy(SaveDeviceInfo
.Subsystem
, pciids_GetSubDeviceName(vendor
, product
, subvendor
, subdevice
, buf
, 79));
296 OOP_GetAttr(obj
, aHidd_PCIDevice_RevisionID
, (APTR
)&val
);
297 snprintf(buf
, 79, "0x%02lx", val
);
298 set(RevisionID
, MUIA_Text_Contents
, buf
);
299 strcpy(SaveDeviceInfo
.RevisionID
, buf
); //Save Debug Info
301 OOP_GetAttr(obj
, aHidd_PCIDevice_Interface
, (APTR
)&val
);
302 snprintf(buf
, 79, "0x%02lx", val
);
303 set(Interface
, MUIA_Text_Contents
, buf
);
304 strcpy(SaveDeviceInfo
.Interface
, buf
); //Save Debug Info
306 OOP_GetAttr(obj
, aHidd_PCIDevice_Class
, (APTR
)&val
);
307 snprintf(buf
, 79, "0x%02lx", val
);
308 set(_Class
, MUIA_Text_Contents
, buf
);
309 strcpy(SaveDeviceInfo
.Class
, buf
); //Save Debug Info
311 OOP_GetAttr(obj
, aHidd_PCIDevice_SubClass
, (APTR
)&val
);
312 snprintf(buf
, 79, "0x%02lx", val
);
313 set(SubClass
, MUIA_Text_Contents
, buf
);
314 strcpy(SaveDeviceInfo
.Subclass
, buf
); //Save Debug Info
316 OOP_GetAttr(obj
, aHidd_PCIDevice_IRQLine
, (APTR
)&val
);
317 OOP_GetAttr(obj
, aHidd_PCIDevice_INTLine
, (APTR
)&val2
);
320 snprintf(buf
, 79, "%ld (%lc)", val2
, val
+ 'A' - 1);
322 else snprintf(buf
, 79, _(MSG_NA
));
323 set(IRQLine
, MUIA_Text_Contents
, buf
);
324 strcpy(SaveDeviceInfo
.IRQ
, buf
); //Save Debug Info
326 OOP_GetAttr(obj
, aHidd_PCIDevice_RomBase
, (APTR
)&val
);
327 OOP_GetAttr(obj
, aHidd_PCIDevice_RomSize
, (APTR
)&val2
);
328 snprintf(buf
, 79, "0x%08lx", val2
);
331 set(ROMSize
, MUIA_Text_Contents
, buf
);
332 strcpy(SaveDeviceInfo
.ROM_Size
, buf
); //Save Debug Info
335 snprintf(buf
, 79, "0x%08lx", val
);
336 set(ROMBase
, MUIA_Text_Contents
, buf
);
337 strcpy(SaveDeviceInfo
.ROM_Base
, buf
); //Save Debug Info
339 else set(ROMBase
, MUIA_Text_Contents
, _(MSG_UNUSED
));
343 set(ROMBase
, MUIA_Text_Contents
, _(MSG_NA
));
344 strcpy(SaveDeviceInfo
.ROM_Base
, _(MSG_NA
));
345 set(ROMSize
, MUIA_Text_Contents
, _(MSG_NA
));
346 strcpy(SaveDeviceInfo
.ROM_Size
, _(MSG_NA
));
349 DoMethod(RangeList
, MUIM_List_Clear
);
351 OOP_GetAttr(obj
, aHidd_PCIDevice_Base0
, (APTR
)&val
);
352 OOP_GetAttr(obj
, aHidd_PCIDevice_Size0
, (APTR
)&val2
);
353 OOP_GetAttr(obj
, aHidd_PCIDevice_Type0
, (APTR
)&val3
);
357 memoryPrint(ranges
[0], 0, val
, val2
, val3
);
358 DoMethod(RangeList
, MUIM_List_InsertSingle
, (IPTR
)ranges
[0], MUIV_List_Insert_Bottom
);
359 strcpy(SaveDeviceInfo
.Rangelist_0
, ranges
[0]);
362 OOP_GetAttr(obj
, aHidd_PCIDevice_Base1
, (APTR
)&val
);
363 OOP_GetAttr(obj
, aHidd_PCIDevice_Size1
, (APTR
)&val2
);
364 OOP_GetAttr(obj
, aHidd_PCIDevice_Type1
, (APTR
)&val3
);
368 memoryPrint(ranges
[1], 1, val
, val2
, val3
);
369 DoMethod(RangeList
, MUIM_List_InsertSingle
, (IPTR
)ranges
[1], MUIV_List_Insert_Bottom
);
370 strcpy(SaveDeviceInfo
.Rangelist_1
, ranges
[1]);
373 OOP_GetAttr(obj
, aHidd_PCIDevice_isBridge
, (APTR
)&val
);
377 OOP_GetAttr(obj
, aHidd_PCIDevice_Base2
, (APTR
)&val
);
378 OOP_GetAttr(obj
, aHidd_PCIDevice_Size2
, (APTR
)&val2
);
379 OOP_GetAttr(obj
, aHidd_PCIDevice_Type2
, (APTR
)&val3
);
383 memoryPrint(ranges
[2], 2, val
, val2
, val3
);
384 DoMethod(RangeList
, MUIM_List_InsertSingle
, (IPTR
)ranges
[2], MUIV_List_Insert_Bottom
);
385 strcpy(SaveDeviceInfo
.Rangelist_2
, ranges
[2]);
388 OOP_GetAttr(obj
, aHidd_PCIDevice_Base3
, (APTR
)&val
);
389 OOP_GetAttr(obj
, aHidd_PCIDevice_Size3
, (APTR
)&val2
);
390 OOP_GetAttr(obj
, aHidd_PCIDevice_Type3
, (APTR
)&val3
);
394 memoryPrint(ranges
[3], 3, val
, val2
, val3
);
395 DoMethod(RangeList
, MUIM_List_InsertSingle
, (IPTR
)ranges
[3], MUIV_List_Insert_Bottom
);
396 strcpy(SaveDeviceInfo
.Rangelist_3
, ranges
[3]);
399 OOP_GetAttr(obj
, aHidd_PCIDevice_Base4
, (APTR
)&val
);
400 OOP_GetAttr(obj
, aHidd_PCIDevice_Size4
, (APTR
)&val2
);
401 OOP_GetAttr(obj
, aHidd_PCIDevice_Type4
, (APTR
)&val3
);
405 memoryPrint(ranges
[4], 4, val
, val2
, val3
);
406 DoMethod(RangeList
, MUIM_List_InsertSingle
, (IPTR
)ranges
[4], MUIV_List_Insert_Bottom
);
407 strcpy(SaveDeviceInfo
.Rangelist_4
, ranges
[4]);
410 OOP_GetAttr(obj
, aHidd_PCIDevice_Base5
, (APTR
)&val
);
411 OOP_GetAttr(obj
, aHidd_PCIDevice_Size5
, (APTR
)&val2
);
412 OOP_GetAttr(obj
, aHidd_PCIDevice_Type5
, (APTR
)&val3
);
416 memoryPrint(ranges
[5], 5, val
, val2
, val3
);
417 DoMethod(RangeList
, MUIM_List_InsertSingle
, (IPTR
)ranges
[5], MUIV_List_Insert_Bottom
);
418 strcpy(SaveDeviceInfo
.Rangelist_5
, ranges
[5]);
423 OOP_GetAttr(obj
, aHidd_PCIDevice_SubBus
, (APTR
)&val
);
424 OOP_GetAttr(obj
, aHidd_PCIDevice_ISAEnable
, (APTR
)&val2
);
425 OOP_GetAttr(obj
, aHidd_PCIDevice_VGAEnable
, (APTR
)&val3
);
427 snprintf(ranges
[2], 59, _(MSG_BRIDGE
),
428 val
, (val2
) ? (CONST_STRPTR
)" " : _(MSG_NOT
),
429 (val3
) ? (CONST_STRPTR
)" " : _(MSG_NOT
));
430 DoMethod(RangeList
, MUIM_List_InsertSingle
, (IPTR
)ranges
[2], MUIV_List_Insert_Bottom
);
431 strcpy(SaveDeviceInfo
.Rangelist_2
, ranges
[2]);
432 OOP_GetAttr(obj
, aHidd_PCIDevice_MemoryBase
, (APTR
)&val
);
433 OOP_GetAttr(obj
, aHidd_PCIDevice_MemoryLimit
, (APTR
)&val2
);
435 snprintf(ranges
[3], 59, _(MSG_MEMORY_RANGE
), val
, val2
);
436 DoMethod(RangeList
, MUIM_List_InsertSingle
, (IPTR
)ranges
[3], MUIV_List_Insert_Bottom
);
437 strcpy(SaveDeviceInfo
.Rangelist_3
, ranges
[3]);
438 OOP_GetAttr(obj
, aHidd_PCIDevice_PrefetchableBase
, (APTR
)&val
);
439 OOP_GetAttr(obj
, aHidd_PCIDevice_PrefetchableLimit
, (APTR
)&val2
);
441 snprintf(ranges
[4], 59, _(MSG_PREFETCHABLE_MEMORY
), val
, val2
);
442 DoMethod(RangeList
, MUIM_List_InsertSingle
, (IPTR
)ranges
[4], MUIV_List_Insert_Bottom
);
443 strcpy(SaveDeviceInfo
.Rangelist_4
, ranges
[4]);
444 OOP_GetAttr(obj
, aHidd_PCIDevice_IOBase
, (APTR
)&val
);
445 OOP_GetAttr(obj
, aHidd_PCIDevice_IOLimit
, (APTR
)&val2
);
447 snprintf(ranges
[5], 59, _(MSG_IO_RANGE
), val
, val2
);
448 DoMethod(RangeList
, MUIM_List_InsertSingle
, (IPTR
)ranges
[5], MUIV_List_Insert_Bottom
);
449 strcpy(SaveDeviceInfo
.Rangelist_5
, ranges
[5]);
452 IPTR io
, mem
, master
, snoop
, is66
;
454 OOP_GetAttr(obj
, aHidd_PCIDevice_isIO
, (APTR
)&io
);
455 OOP_GetAttr(obj
, aHidd_PCIDevice_isMEM
, (APTR
)&mem
);
456 OOP_GetAttr(obj
, aHidd_PCIDevice_isMaster
, (APTR
)&master
);
457 OOP_GetAttr(obj
, aHidd_PCIDevice_paletteSnoop
, (APTR
)&snoop
);
458 OOP_GetAttr(obj
, aHidd_PCIDevice_is66MHz
, (APTR
)&is66
);
460 snprintf(buf
, 79, _(MSG_IO_MSG
),
461 io
? _(MSG_YES
):_(MSG_NO
),
462 mem
? _(MSG_YES
):_(MSG_NO
),
463 master
? _(MSG_YES
):_(MSG_NO
),
464 snoop
? _(MSG_YES
):_(MSG_NO
),
465 is66
? _(MSG_YES
):_(MSG_NO
));
466 set(Status
, MUIA_Text_Contents
, buf
);
467 strcpy(SaveDeviceInfo
.Status
, buf
);
478 app
= ApplicationObject
,
479 MUIA_Application_Title
, (IPTR
)APPNAME
,
480 MUIA_Application_Version
, (IPTR
)VERSION
,
481 MUIA_Application_Copyright
, (IPTR
)"(C) 2004-2010, The AROS Development Team",
482 MUIA_Application_Author
, (IPTR
)"Michal Schulz",
483 MUIA_Application_Base
, (IPTR
)APPNAME
,
484 MUIA_Application_Description
, __(MSG_DESCRIPTION
),
486 SubWindow
, MainWindow
= WindowObject
,
487 MUIA_Window_Title
, __(MSG_WINTITLE
),
488 // MUIA_Window_Height, MUIV_Window_Height_Visible(50),
489 // MUIA_Window_Width, MUIV_Window_Width_Visible(60),
491 WindowContents
, HGroup
,
492 MUIA_Group_SameWidth
, FALSE
,
494 Child
, ListviewObject
,
495 MUIA_Listview_List
, DriverList
= ListObject
,
497 MUIA_List_AdjustWidth
, TRUE
,
498 MUIA_List_DisplayHook
, &display_hook
,
502 Child
, VGroup
, GroupFrameT(_(MSG_DRIVER_INFO
)),
504 Child
, Label(_(MSG_DRIVER_NAME
)),
506 Child
, StrDriverName
= TextObject
,
508 MUIA_Background
, MUII_TextBack
,
509 MUIA_Text_SetMax
, FALSE
,
510 MUIA_Text_Contents
, "",
512 Child
, Label(_(MSG_DIRECT_BUS
)),
513 Child
, StrDriverDirect
= TextObject
,
515 MUIA_Background
, MUII_TextBack
,
516 MUIA_Text_SetMax
, FALSE
,
517 MUIA_Text_Contents
, "",
520 Child
, Label(_(MSG_HARDWARE_INFO
)),
521 Child
, StrDriverHWName
= TextObject
,
523 MUIA_Background
, MUII_TextBack
,
524 MUIA_Text_SetMax
, FALSE
,
525 MUIA_Text_Contents
, "",
529 Child
, VGroup
, GroupFrameT(_(MSG_PCI_DEVICE_INFO
)),
531 Child
, Label(_(MSG_DEVICE_DESCRIPTION
)),
532 Child
, StrDescription
= TextObject
,
534 MUIA_Background
, MUII_TextBack
,
535 MUIA_Text_SetMax
, FALSE
,
536 MUIA_Text_Contents
, "",
538 Child
, Label(_(MSG_VENDORNAME
)),
539 Child
, VendorName
= TextObject
,
541 MUIA_Background
, MUII_TextBack
,
542 MUIA_Text_SetMax
, FALSE
,
543 MUIA_Text_Contents
, "",
545 Child
, Label(_(MSG_PRODUCTNAME
)),
546 Child
, ProductName
= TextObject
,
548 MUIA_Background
, MUII_TextBack
,
549 MUIA_Text_SetMax
, FALSE
,
550 MUIA_Text_Contents
, "",
552 Child
, Label(_(MSG_SUBSYSTEM
)),
553 Child
, SubsystemName
= TextObject
,
555 MUIA_Background
, MUII_TextBack
,
556 MUIA_Text_SetMax
, FALSE
,
557 MUIA_Text_Contents
, "",
561 Child
, Label(_(MSG_VENDORID
)),
562 Child
, VendorID
= TextObject
,
564 MUIA_Background
, MUII_TextBack
,
565 MUIA_Text_SetMax
, FALSE
,
566 MUIA_Text_Contents
, "0x0000",
568 Child
, Label(_(MSG_PRODUCTID
)),
569 Child
, ProductID
= TextObject
,
571 MUIA_Background
, MUII_TextBack
,
572 MUIA_Text_SetMax
, FALSE
,
573 MUIA_Text_Contents
, "0x0000",
575 Child
, Label(_(MSG_REVISIONID
)),
576 Child
, RevisionID
= TextObject
,
578 MUIA_Background
, MUII_TextBack
,
579 MUIA_Text_SetMax
, FALSE
,
580 MUIA_Text_Contents
, "0x0000",
582 Child
, Label(_(MSG_CLASS
)),
583 Child
, _Class
= TextObject
,
585 MUIA_Background
, MUII_TextBack
,
586 MUIA_Text_SetMax
, FALSE
,
587 MUIA_Text_Contents
, "0x00",
589 Child
, Label(_(MSG_SUBCLASS
)),
590 Child
, SubClass
= TextObject
,
592 MUIA_Background
, MUII_TextBack
,
593 MUIA_Text_SetMax
, FALSE
,
594 MUIA_Text_Contents
, "0x00",
596 Child
, Label(_(MSG_INTERFACE
)),
597 Child
, Interface
= TextObject
,
599 MUIA_Background
, MUII_TextBack
,
600 MUIA_Text_SetMax
, FALSE
,
601 MUIA_Text_Contents
, "0x00",
603 Child
, Label(_(MSG_ROM_BASE
)),
604 Child
, ROMBase
= TextObject
,
606 MUIA_Background
, MUII_TextBack
,
607 MUIA_Text_SetMax
, FALSE
,
608 MUIA_Text_Contents
, "0x00000000",
610 Child
, Label(_(MSG_ROM_SIZE
)),
611 Child
, ROMSize
= TextObject
,
613 MUIA_Background
, MUII_TextBack
,
614 MUIA_Text_SetMax
, FALSE
,
615 MUIA_Text_Contents
, "0x00000000",
617 Child
, Label(_(MSG_IRQ
)),
618 Child
, IRQLine
= TextObject
,
620 MUIA_Background
, MUII_TextBack
,
621 MUIA_Text_SetMax
, FALSE
,
622 MUIA_Text_Contents
, "15",
626 Child
, RangeList
= ListviewObject
,
627 MUIA_Listview_List
, ListObject
,
629 MUIA_List_AdjustWidth
, FALSE
,
633 Child
, Status
= TextObject
,
635 MUIA_Background
, MUII_TextBack
,
636 MUIA_Text_SetMax
, FALSE
,
639 /*Save the displayed info into a text file in RAM:*/
640 Child
, SaveInfo
= SimpleButton(_(MSG_SAVETORAMDISK
) ),
641 Child
, SaveAllInfo
= SimpleButton(_(MSG_SAVEALLTORAMDISK
) ),
643 End
, // WindowContents
645 End
; // ApplicationObject
649 /* Quit application if the windowclosegadget or the esc key is pressed. */
650 DoMethod(MainWindow
, MUIM_Notify
, MUIA_Window_CloseRequest
, TRUE
,
652 MUIM_Application_ReturnID
, MUIV_Application_ReturnID_Quit
);
654 DoMethod(DriverList
, MUIM_Notify
, MUIA_List_Active
, MUIV_EveryTime
,
656 MUIM_CallHook
, (IPTR
)&select_hook
);
658 DoMethod(SaveInfo
, MUIM_Notify
, MUIA_Pressed
, FALSE
,
660 MUIM_CallHook
, (IPTR
)&save_hook
);
662 DoMethod(SaveAllInfo
, MUIM_Notify
, MUIA_Pressed
, FALSE
,
664 MUIM_CallHook
, (IPTR
)&saveall_hook
);
674 pci_hook
.h_Entry
= (APTR
)pci_callback
;
675 display_hook
.h_Entry
= (APTR
)display_function
;
676 select_hook
.h_Entry
= (APTR
)select_function
;
677 save_hook
.h_Entry
= (APTR
)save_function
;
678 saveall_hook
.h_Entry
= (APTR
)saveall_function
;
680 if (!Locale_Initialize())
681 cleanup(_(MSG_ERROR_LOCALE
));
687 pci
= OOP_NewObject(NULL
, CLID_Hidd_PCI
, NULL
);
690 HIDD_PCI_EnumDevices(pci
, &pci_hook
, NULL
);
693 set(MainWindow
, MUIA_Window_Open
, TRUE
);
695 if(xget(MainWindow
, MUIA_Window_Open
))
697 DoMethod(app
, MUIM_Application_Execute
);
698 set(MainWindow
, MUIA_Window_Open
, FALSE
);
710 } /* main(int argc, char *argv[]) */