Subversion Repositories Kolibri OS

Rev

Rev 1386 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1356 diamond 1
;***************************************************************
132 diamond 2
; project name:    PCI Device Enumeration
475 Ghost 3
; target platform: KolibriOS
1351 art_zh 4
; compiler:        flat assembler 1.68
5
; version:         2.2
6
; last update:     December 2007
475 Ghost 7
; maintained by:   Jason Delozier (cordata51@hotmail.com)
8
;                  Sergey Kuzmin (kuzmin_serg@list.ru)
9
;                  Mihailov Ilia (ghost.nsk@gmail.com)
1351 art_zh 10
;                  Artem Jerdev  (art_zh@yahoo.com)
205 heavyiron 11
; project site:    http://www.coolthemes.narod.ru/pcidev.html
132 diamond 12
;***************************************************************
13
;Summary: This program will attempt to scan the PCI Bus
14
;        and display basic information about each device
15
;        connected to the PCI Bus.
16
;***************************************************************
17
;HISTORY:
18
;keep dates in european format (dd/mm/yyyy), please
19
; '!' means big changes
205 heavyiron 20
;
21
;to-do:
475 Ghost 22
; more vendors
205 heavyiron 23
; vendor's website
24
; Subsystem id and Subsystem vendor id detection
25
 
26
; Full device detection (like "ATI Radeon 9200") will increase app
27
; size a lot and probably it is function of particular drivers
132 diamond 28
;----------------------------------------------------------------
1386 art_zh 29
;2.2: PCIDEV   03/01/2010
1351 art_zh 30
;Author:    Artem Jerdev 
31
;Features:
32
;           fixed
33
;                 * English in some comments ;)
34
;           added
1386 art_zh 35
;                 * ! user-accessible MMIO channels detection
1351 art_zh 36
;                 * ! ASCII-dump as PCI memory access demonstration
37
;           optimization
38
;                 * (yet needed)
39
;----------------------------------------------------------------
475 Ghost 40
;2.1: PCIDEV   ??/04/2007
41
;Author:    Mihailov Ilia aka Ghost 
42
;Features:
43
;           fixed
1351 art_zh 44
;                 * Some little bugs
475 Ghost 45
;                 * Source code formating
46
;                 * PCI version normalized 0210 -> 2.10
47
;           added
48
;                 * + 13 vendor (total now 1000!)
49
;                 * + 3 class type
50
;                 * Fast call source ready
51
;                 * Device IRQ detection
52
;           optimized
53
;                 * ! size optimized (61025 -> 32501 see added)
54
;                 * easy to add new vendor & class names
55
;----------------------------------------------------------------
205 heavyiron 56
;2.0: PCIDEV   30/08/2006
57
;(it differs a lot from the version 1.0, which was introduced 19 months ago)
58
;Author:    Marat Zakiyanov aka Mario79 
59
;           Sergey Kuzmin aka Wildwest 
60
;Features:
61
;           added
62
;                 * Detection of Interface by Mario79
63
;                 * 122 vendor id's by Wildwest
64
;                 * Description is based on Class, SubClass and Interface now (PCI 3.0) by Wildwest
65
;----------------------------------------------------------------
132 diamond 66
;1.31: PCIDEV   13/05/2006
67
;Author:    Jason Delozier 
68
;Features:
69
;           fixed
70
;                 * ! bug in Company Name look up code that would cause Unknown Name errors.
71
;                 * ! possible bugs, many instructions missing byte, word, dword prefixes
72
;                 * ! possible bug which could have occured after removing  "PREVIOUSVERSIONLIST"
73
;                     entry in loop up code and not fixing jump parameters.
74
;           added
75
;                 *  comments to various parts of the code
76
;           optimized
77
;                 * various parts of the source, too many to remember and mention.
78
;                 * changed entries for Subclasses in vendors.inc to Byte format, saves a little space.
79
;----------------------------------------------------------------
80
;1.30: PCIDEV   11/05/2006
81
;Author:    Sergey Kuzmin aka Wildwest 
82
;Features:
83
;           added
84
;                * 3 new vendor id's (ESS from Madis Kalme and 2 id's
85
;                  forgotten from 1.15 release: Broadcom -SiByte and Chaintech Comp.)
205 heavyiron 86
;           changed
87
;                * I don't know why other devs (Jason or Victor) changed window style
132 diamond 88
;                  to old ugly one, so I changed it back to skinned type 3.
89
;                * the same goes to the use of macroc.inc - it is enabled again.
90
;           deleted
91
;                * there is no more label "PREVIOUSVERSIONLIST" - id's moved to the
92
;                  appropriate parts of global list.
93
;----------------------------------------------------------------
94
;1.29: PCIDEV   30/04/2006
95
;Author:    Jason Delozier 
96
;Features:
97
;           fixed
98
;                 * ! bug that would not allow devices with device
99
;                   numbers > 16 to be displayed.
100
;           added
101
;                 * ! another heading called "FNC" (function) which allows
102
;                   the multipurpose Device/Function varible to be split and
103
;                   displayed to the user properly.
104
;                 * horizontal bars to display for easier reading.
105
;           optimized
106
;                 * vendor/description search routines for speed and space.
107
;----------------------------------------------------------------
108
;1.25: PCIDEV   02/10/2005
109
;Author:    Sergey Kuzmin aka Wildwest 
110
;Features:
111
;            changed
205 heavyiron 112
;                  * ! Description is based on Class and SubClass
132 diamond 113
;                     now (PCI 3.0). The Names of Classes and SubClasses
114
;                     are in the end of Vendors.inc
115
;            deleted
116
;                  * label "Descriptions" (names of Classes)
117
;
118
;----------------------------------------------------------------
119
;1.20: PCIDEV   16/08/2005
120
;Author:    Victor Alberto Gil Hanla a.k.a. vhanla 
121
;Features:
122
;           added
123
;                  * ! many vendor lists (865)
124
;           deleted
125
;                  * previous version's list
126
;           changed
127
;                  * previous Company Name searching and printing
128
;----------------------------------------------------------------
129
;1.15: PCIDEV   03/06/2005
130
;Author:    Sergey Kuzmin aka Wildwest 
131
;Features:
132
;           added
475 Ghost 133
;                 * quantity of devices,
134
;                 * ! detection of Company Name based on Vendor ID,
135
;                 * database of VenID (35 ID's),
136
;                 * macros.inc for smaller size,
132 diamond 137
;           changed
475 Ghost 138
;                 * interface+(skinned window),
139
;                 * VenID before DevID in 'table'(was DevID before VenID)
132 diamond 140
;----------------------------------------------------------------
141
;1.0: PCIDEV    30/01/2005
142
;Author:    Jason Delozier
143
;Features:
144
;          able to
145
;                 * detect PCI version,
146
;                 * quantity of PCI buses,
147
;                 * Vendor&Device ID for appropriate Device on Bus;
148
;                 * detect Revision, Class and Subclass of Device,
149
;                 * and make Description based on Class
150
;-------------------------------------------------------------
1364 diamond 151
include '../../../macros.inc'
1359 art_zh 152
;include 'macros.inc'
1351 art_zh 153
 
475 Ghost 154
MEOS_APP_START
155
CODE
156
	call draw_window
132 diamond 157
 
475 Ghost 158
still:	mcall	10			; wait here for event
159
	dec	eax			; redraw request ?
160
	jz	red
161
	dec	eax			; key in buffer ?
162
	jz	key
163
	dec	eax			; button in buffer ?
164
	jz	button
165
	jmp	still
132 diamond 166
 
475 Ghost 167
red:					; redraw
168
	mcall	9, Proc_Info, -1	; window redraw requested so get new window coordinates and size
485 heavyiron 169
	mov	eax, [Proc_Info.box.left]; store the window coordinates into the Form Structure
475 Ghost 170
	mov	[Form + 2], ax		; x start position
485 heavyiron 171
	mov	eax, [Proc_Info.box.top];
475 Ghost 172
	mov	[Form + 6], ax		; ystart position
485 heavyiron 173
	mov	eax, [Proc_Info.box.width]	;
475 Ghost 174
	mov	[Form], ax		; window width
485 heavyiron 175
	mov	eax, [Proc_Info.box.height]	;
475 Ghost 176
	mov	[Form + 4] ,ax		; window height
177
	call	draw_window		; go redraw window now
178
	jmp	still
132 diamond 179
 
475 Ghost 180
key:					; key
181
	mcall	2			; just read it and ignore
182
	jmp	still
1351 art_zh 183
button: 				; button
475 Ghost 184
	mcall	17			; get id
185
	cmp	ah, 1			; button id = 1 ?
186
	jne	still
187
	mcall	-1			; close this program
132 diamond 188
 
189
draw_window:
475 Ghost 190
	mov	byte [total], 0
191
	mcall	12, 1			; start of draw
192
	; DRAW WINDOW
193
	mcall	0, dword [Form], dword [Form + 4], 0x13ffffff, 0x805080d0, title
194
	; Insert horizontal bars  in list area
1351 art_zh 195
	mov	eax, 13 		; draw bar system function
196
	mov	ebx, 18 		; set Xstart position of bar
197
	shl	ebx, 16 		;
198
	mov	bx, word [Form] ; get width of window
475 Ghost 199
	sub	bx, 32			; bar is 32 pixels shorter then window width
200
	mov	ecx, 119 * 65536 + 10	; set Ystart(109) and Height(10) of bar   109
201
	mov	edx, 0xC0C0C0		; set color of bar
202
again:	;begin draw bar loop
203
	mcall				; draw bar to window area
1351 art_zh 204
	shr	ecx, 16 		; move the Ystart position to working area
205
	add	ecx, 34 		; add 34 pixels to Y Start (moves bar down)
475 Ghost 206
	cmp	cx, word [Form + 4]	; is the Ystart position outside of window area
207
	jae	nomo			; if so stop drawing bars
1351 art_zh 208
	sub	ecx, 14 		; if not, we only need 20 pixels between bar tops
209
	shl	ecx, 16 		; set that values as Ystart
210
	add	ecx, 10 		; Bar Height is always 10 pixels
475 Ghost 211
	jmp	again			; draw another bar
212
nomo:					;done drawing bars here
213
	; start PCI stuff
214
	call	Get_PCI_Info		; get pci version and last bus, scan for and draw each pci device
132 diamond 215
 
475 Ghost 216
	; Window inteface
217
	mov	cx, [PCI_Version]
218
	add	ch, '0'
1351 art_zh 219
	mov	[PCIWin + 85], ch	; 0xBADCODE but it works !
475 Ghost 220
	mov	ch, cl
221
	shr	cl, 4
222
	and	ch, 0x0f
223
	add	cx, '00'
224
	mov	[PCIWin + 87], cx
1351 art_zh 225
	mov	cl, [PCI_LastBus]	; will only work if [PCI_LastBus] < 10
475 Ghost 226
	add	cl, '0'
1351 art_zh 227
	mov	[PCIWin + 106], cl
228
 
475 Ghost 229
	mov	edx, PCIWin
230
	mov	ebx, 20 * 65536 + 25	; x start, ystart of text
231
	mov	ecx, 0x224466		; color of text
232
	mov	eax, 4
233
@@:	movzx	esi, byte[edx]
234
	inc	edx
235
	mcall
236
	add	ebx, 10
237
	add	edx, esi
238
	cmp	byte[edx], -1
239
	jne	@b
240
	; Quantity of devices...
241
	movzx	ecx, byte [total]	; number to draw
242
	mcall	47, 0x00020000,,150 * 65536 + 65, 0x224466
1386 art_zh 243
 
244
	mov	ah, [MMIO_allowed]
245
	or 	ah, ah
246
	jz 	@f
247
	mov	ah, [MMIO_Bus]	; =255 if MMIO disabled / not found
248
	and	ah, 0x7f
249
	inc	ah
250
	jo	@f
1351 art_zh 251
	call	Try_MMIO
1386 art_zh 252
@@:
475 Ghost 253
	mcall	12, 2			; end of draw
254
	ret
132 diamond 255
 
475 Ghost 256
;------------------------------------------------------------------
205 heavyiron 257
;* Gets the PCI Version and Last Bus
132 diamond 258
Get_PCI_Info:
475 Ghost 259
	mcall	62, 0
260
	mov	word [PCI_Version], ax
261
	mcall	62, 1
262
	mov	byte [PCI_LastBus], al
263
	;----------------------------------------------------------
264
	;* Get all devices on PCI Bus
265
	cmp	al, 0xff		; 0xFF means no pci bus found
266
	jne	Pci_Exists		;
267
	ret				; if no bus then leave
132 diamond 268
Pci_Exists:
1351 art_zh 269
	mov	byte [V_Bus], 0 	; reset varibles
270
	mov	byte [V_Dev], 0 	;
475 Ghost 271
	mov	edx,  20 * 65536 + 110	; set start write position
132 diamond 272
Start_Enum:
475 Ghost 273
	mov	bl, 6			; get a dword
274
	mov	bh, byte [V_Bus]	; bus of pci device
275
	mov	ch, byte [V_Dev]	; device number/function
276
	mov	cl, 0			; offset to device/vendor id
277
	mcall	62			; get ID's
132 diamond 278
 
475 Ghost 279
	cmp	ax, 0			; Vendor ID should not be 0 or 0xFFFF
1351 art_zh 280
	je	nextDev 		; check next device if nothing exists here
475 Ghost 281
	cmp	ax, 0xffff		;
1351 art_zh 282
	je	nextDev 		;
132 diamond 283
 
475 Ghost 284
	mov	word [PCI_Vendor], ax	; There is a device here, save the ID's
1351 art_zh 285
	shr	eax, 16 		;
475 Ghost 286
	mov	word [PCI_Device], ax	;
287
	mov	bl, 4			; Read config byte
288
	mov	bh, byte [V_Bus]	; Bus #
289
	mov	ch, byte [V_Dev]	; Device # on bus
290
	mov	cl, 0x08		; Register to read (Get Revision)
291
	mcall	62			; Read it
292
	mov	byte [PCI_Rev], al	; Save it
293
	mov	cl, 0x0b		; Register to read (Get class)
294
	mcall	62			; Read it
1351 art_zh 295
 
475 Ghost 296
	mov	byte [PCI_Class], al	; Save it
297
	mov	cl, 0x0a		; Register to read (Get Subclass)
298
	mcall	62			; Read it
299
	mov	byte [PCI_SubClass], al; Save it
1351 art_zh 300
; by Mario79 august 2006
475 Ghost 301
	mov	cl, 0x09		; Register to read (Get Interface)
302
	mcall	62			; Read it
303
	mov  [PCI_Interface], al	; Save it
205 heavyiron 304
;
1351 art_zh 305
; by Ghost april 2007
475 Ghost 306
	mov	cl, 0x3c		; Register to read (Get IRQ)
307
@@:	mcall	62			; Read it
308
	mov	[PCI_IRQ], al		; Save it
309
;
310
	inc	byte [total]		; one more device found
311
	call	Print_New_Device	; print device info to screen
132 diamond 312
nextDev:
475 Ghost 313
	inc	byte [V_Dev]		; next device on this bus
314
	jnz	Start_Enum		; jump until we reach zero
315
	;(used to be JNO which caused bug!!! 30-4-2006, JMD)
1351 art_zh 316
	mov	byte [V_Dev], 0 	; reset device number
475 Ghost 317
	inc	byte [V_Bus]		; next bus
318
	mov	al, byte [PCI_LastBus]	; get last bus
319
	cmp	byte [V_Bus], al	; was it last bus
320
	jbe	Start_Enum		; if not jump to keep searching
321
	ret
132 diamond 322
 
1386 art_zh 323
no_ummio_allowed:
324
	xor 	al,al
325
	mov 	[MMIO_allowed],al		; re-enter the subroutine
475 Ghost 326
;------------------------------------------------------------------
132 diamond 327
;* Print device info to screen
1386 art_zh 328
 
132 diamond 329
Print_New_Device:
1386 art_zh 330
	xor 	esi, esi	    	; default text color
331
	mov 	cl, [MMIO_allowed]
332
	or	cl,cl
333
	jz	no_ummio_here
334
	mov 	ch, byte [V_Bus]
335
	mov 	cl, byte [V_Dev]
1351 art_zh 336
	mcall	62, 11		; detect uMMIO
1386 art_zh 337
	and	ax,0x7fff
338
	inc 	ax			; -1 returned?
339
	jo 	no_ummio_allowed
340
	inc 	ax			; -2 returned?
341
	jo 	no_ummio_here
342
	inc 	ax			; -3 returned?
343
	jo 	no_ummio_here
344
	mov 	esi, 0x990033   ; highlighted text color
345
	mov 	bh, byte [V_Bus]
346
	mov 	bl, byte [V_Dev]
347
	mov 	byte [MMIO_Bus], bh
348
	mov 	byte [MMIO_Dev], bl
349
	add 	bh,'0'
350
	mov 	[PCIWin + 129], bh	; uMMIO bus
351
	mov 	al, bl
352
	shr 	al, 1
353
	shr 	al, 1
354
	shr 	al, 1
355
	add 	al,'0'
356
	mov 	[PCIWin + 131], al	; uMMIO device
357
	and 	bl, 7
358
	add 	bl, '0'
359
	mov 	[PCIWin + 133], bl	; uMMIO function
1351 art_zh 360
 
361
no_ummio_here:
475 Ghost 362
	movzx	ecx,word [PCI_Vendor]	; Pointer to number to be written
363
	mcall	47, 0x00040100		; Write Vendor ID
364
	and	edx, 0xFFFF		;*****************************************
1351 art_zh 365
	or	edx, 54 * 65536 ; X start becomes 54
475 Ghost 366
	movzx	ecx, word [PCI_Device]	; get Vendor ID
367
	mcall				; Draw Vendor ID to Window
368
	and	edx, 0xFFFF		;*****************************************
1351 art_zh 369
	or	edx, 98 * 65536 ; X start becomes 98
475 Ghost 370
	movzx	ecx, byte [V_Bus]	; get bus number
371
	mcall	,0x00020100		; draw bus number to screen
372
	and	edx, 0xFFFF		;*****************************************
373
	or	edx, 128 * 65536	; X start becomes 128
374
	movzx	ecx, byte [V_Dev]	; get device number
375
	shr	ecx, 3			; device number is bits 3-7
376
	mcall				; Draw device Number To Window
1351 art_zh 377
 
475 Ghost 378
	and	edx, 0xFFFF		;*****************************************
379
	or	edx, 155 * 65536	; X start becomes 155
380
	movzx	ecx, byte [V_Dev]	; get Function number
381
	and	ecx, 7			; function is first 3 bits
382
	mcall				; Draw Function Number To Window
383
	and	edx, 0xFFFF		;*****************************************
384
	or	edx, 179 * 65536	; X start becomes 179
385
	movzx	ecx, byte [PCI_Rev]	; get revision number
386
	mcall				; Draw Revision to screen
387
	and	edx, 0xFFFF		;*****************************************
388
	or	edx, 215*65536		; X start becomes 215
389
	movzx	ecx, byte [PCI_Class]	; get PCI_Class
390
	mcall				; Draw Class to screen
391
	and	edx, 0xFFFF		;*****************************************
392
	or	edx, 250*65536		; X start becomes 250
393
	movzx	ecx, byte [PCI_SubClass]; get sub class
394
	mcall				; Draw Sub Class to screen
205 heavyiron 395
; from Mario79 august 2006
475 Ghost 396
	and	edx, 0xFFFF		;*****************************************
397
	or	edx, 280 * 65536	; X start becomes 280
398
	movzx	ecx, [PCI_Interface]	; get Interface
399
	mcall
205 heavyiron 400
;
1351 art_zh 401
; from Ghost april 2007                 ;*****************************************
475 Ghost 402
	movzx	ecx, [PCI_IRQ]		; get Interface
403
	cmp	cl, 0x0f		; IRQ between 0..15
404
	ja	@f
405
	and	edx, 0xFFFF
406
	or	edx, 310 * 65536	; X start becomes 310
407
	mcall
408
@@:
409
;
410
	;Write Names
1351 art_zh 411
	movzx	ebx, dx 	; Set y position
475 Ghost 412
	or	ebx, 340 * 65536	; set Xposition to 340
132 diamond 413
 
475 Ghost 414
;------------------------------------------------------------------
415
; Prints the Vendor's Name based on Vendor ID
132 diamond 416
;
475 Ghost 417
; Modified on ??-04-2007 by Ghost for size
418
;------------------------------------------------------------------
419
	mov	edx, VendorsTab
420
	mov	cx, word[PCI_Vendor]
1351 art_zh 421
 
475 Ghost 422
.fn:	mov	ax, [edx]
423
	add	edx, 6
424
	test	ax, ax
425
	jz	.find
426
	cmp	ax, cx
427
	jne	.fn
428
.find:	mov	edx, [edx - 4]
429
	mcall	4,, 0x80000000		; lets print the vendor Name
132 diamond 430
 
431
;------------------------------------------------------------------
475 Ghost 432
; Get description based on Class/Subclass
433
;
434
; Modified on ??-04-2007 by Ghost for size
435
;------------------------------------------------------------------
436
	mov	eax, dword [PCI_Class]
437
	and	eax, 0xffffff
438
	xor	edx, edx
439
	xor	esi, esi
440
.fnc:	inc	esi
441
	mov	ecx, [Classes + esi * 8 - 8]
442
	cmp	cx, 0xffff
443
	je	.endfc
444
	cmp	cx, ax
445
	jne	.fnc
446
	test	ecx, 0xff000000
447
	jz	@f
448
	mov	edx, [Classes + esi * 8 - 4]
449
	jmp	.fnc
450
@@:	cmp	eax, ecx
451
	jne	.fnc
452
	xor	edx, edx
1351 art_zh 453
.endfc: test	edx, edx
475 Ghost 454
	jnz	@f
455
	mov	edx, [Classes + esi * 8 - 4]
1351 art_zh 456
@@:
457
	and	ebx, 0x0000FFFF 	; clear X position
475 Ghost 458
	or	ebx, 0x24E0000		; set X position to 590 pixels
459
	mcall	4,, 0x80000000,, 32	; draw the text
1351 art_zh 460
	movzx	edx, bx 	; get y coordinate
461
	add	edx, 0x0014000A 	; add 10 to y coordinate and set x coordinate to 20
462
	mov	[gr_pos], edx
475 Ghost 463
	ret
1351 art_zh 464
;------------------------------------------------------------------
465
; Get the user-MMIO related info
466
;
467
; Added on ??-12-2009 by art_zh
468
;------------------------------------------------------------------
469
Try_MMIO:
470
	xor	ebx, ebx
471
	mov	edx, ebx
1358 art_zh 472
	mov	bh, [MMIO_BAR]
1351 art_zh 473
	or	bx, 12			; function 12
474
	mov	ecx, 4096		; =1 page to map
475
	mcall	62
1358 art_zh 476
	mov	[MMIO_Map], eax 	; store MMIO lin.addr.
1351 art_zh 477
	mov	ecx, 0x80990022 	; print color : red
478
	add	bh, '0'
479
	cmp	eax, -3
480
	jne	@f
481
	mov	[bar_um+3], bh
482
	mov	ebx, [gr_pos]
483
	mov	edx, bar_um
484
	mcall	4
485
	jmp	mmio_next_bar
486
@@:
487
	cmp	eax, -4
488
	jne	@f
489
	mov	[bar_io+3], bh
490
	mov	ebx, [gr_pos]
491
	mov	edx, bar_io
492
	mcall	4
493
	jmp	mmio_next_bar
494
@@:
1358 art_zh 495
	cmp	bh, '6' 	; expansion ROM ?
496
	je	@f
1351 art_zh 497
	mov	[bar_ram+3], bh
498
	mov	ebx, [gr_pos]
499
	mov	edx, bar_ram
500
	mcall	4
1358 art_zh 501
	jmp	mmio_dump
1353 art_zh 502
@@:
503
	mov	ebx, [gr_pos]
504
	mov	edx, bar_rom
505
	mcall	4
205 heavyiron 506
 
1353 art_zh 507
mmio_dump:
1358 art_zh 508
	mov	edx, [MMIO_Map]
1351 art_zh 509
	mov	esi, 64
510
	mov	ecx, 0x099		; dump color : blue
511
	add	ebx, 10
512
	mov	[gr_pos], ebx
513
	mcall	4
1358 art_zh 514
	mov	ecx, [MMIO_Map] 	; release the tried page
1351 art_zh 515
	mcall	62,13
516
 
517
mmio_next_bar:
518
	mov	bh, [MMIO_BAR]
519
	inc	bh
1353 art_zh 520
	cmp	bh,7
1351 art_zh 521
	je	@f
522
	mov	[MMIO_BAR], bh
523
	add	[gr_pos], 10
524
	jmp	Try_MMIO
525
 
526
@@:
527
	xor	bh,bh
528
	mov	[MMIO_BAR], bh
529
	ret
530
 
531
 
1728 clevermous 532
include 'vendors.inc'
132 diamond 533
;------------------------------------------------------------------
534
; DATA AREA
475 Ghost 535
DATA
132 diamond 536
 
537
 
475 Ghost 538
Form:	dw 800 ; window width (no more, special for 800x600)
539
	dw 100 ; window x start
1358 art_zh 540
	dw 620 ; window height
541
	dw 20 ; window y start
205 heavyiron 542
 
1351 art_zh 543
title	db 'PCI Device Enumerator v 2.2 by J.Delozier, S.Kuzmin, V.Hanla, M.Zakiyanov, A.Jerdev', 0
205 heavyiron 544
 
475 Ghost 545
PCIWin mls \
1351 art_zh 546
	'   Don`t forget to enable PCI Access to Applications in Setup Menu.',\
475 Ghost 547
	'',\
1351 art_zh 548
	'PCI Version  = x.xx; Last PCI Bus = x',\
549
	'User MMIO channel = 0F.F:F ',\
550
	'Number of PCI units =',\
475 Ghost 551
	'',\
552
	'VenID DevID Bus# Dev# Fnc Rev  Class  Subclass/ IRQ                 Company                      Description',\
553
	'                                      Interface',\
554
	'----- ----- ---- ---- --- ---  -----  --------- --- ------------------------------------------ ----------------'
205 heavyiron 555
 
1351 art_zh 556
bar_ram db 'BARx: MMIO block', 0
557
bar_io	db 'BARx: IO ports',0
558
bar_um	db 'BARx: unmapped',0
1358 art_zh 559
bar_rom db 'BAR6: Expansion ROM', 0
1351 art_zh 560
 
475 Ghost 561
;------------------------------------------------------------------
562
; UNINITIALIZED DATA AREA
563
UDATA
205 heavyiron 564
 
475 Ghost 565
total		db ?
566
V_Bus		db ?
567
V_Dev		db ?
568
PCI_Version	dw ?
569
PCI_LastBus	db ?
570
PCI_Device	dw ?
571
PCI_Vendor	dw ?
1351 art_zh 572
PCI_Bus 	db ?
573
PCI_Dev 	db ?
574
PCI_Rev 	db ?
475 Ghost 575
; don`t change order!!!
576
PCI_Class	db ?
577
PCI_SubClass	db ?
578
PCI_Interface	db ?
1351 art_zh 579
PCI_IRQ 	db ?
205 heavyiron 580
 
1351 art_zh 581
align 4
1386 art_zh 582
MMIO_Bus	db 255
583
MMIO_Dev	db 255
1351 art_zh 584
MMIO_BAR	db 0
1386 art_zh 585
MMIO_allowed	db 1
1351 art_zh 586
MMIO_Map	rd 8
587
 
588
gr_pos		dd ?
589
 
475 Ghost 590
Proc_Info	process_information
591
MEOS_APP_END
1351 art_zh 592